public string DetailRtf
        {
            get { return Detail.Rtf; }
            set { Detail.Rtf = value; }
        }        public override string Text
        {
            get { return Detail.Text; }
            set { Detail.Text = value; }
        }控件中包含上述代码,可是生成的控件在设计状况下,没有Text属性,代码修改成        public string Text2
        {
            get { return Detail.Text; }
            set { Detail.Text = value; }
        }就可以看见Text2属性,如果不用override,会生成警告将隐藏继承的成员“System.Windows.Forms.UserControl.Text”。若要使当前成员重写该实现,请添加关键字 override。否则,添加关键字 new。我用new试过也是不行,请问要怎样才能让我自定义控件在设计状况下属性中能有Text属性?另外想请问我希望在设计窗体上加入自定义控件,自定义控件可以显示缺省控件名,类似Label控件,能按次序显示MyControl1,MyControl2,... ...这样要怎么实现?我在MyControl_Load中获取this.Name是固定的控件类名MyControl

解决方案 »

  1.   

    既然override可以,为什么不用?
    public new string Text
            {
                get { return Detail.Text; }
                set { Detail.Text = value; }
            }
      

  2.   

    我用的是VS2010,另外补充说明一下,我自己代码没有设置Text属性的情况下,按提示应该是继承了那个System.Windows.Forms.UserControl.Text的状况,设计状况下属性中也是没有Text,不过在运行时候可以取得和设置Text,而且这个Text就是Detail.Text (Detail是包含在自定义控件中的一个RichTextBox)
      

  3.   

    直接继承RichTextBox就行了嘛,不需要继续于UserControl
    public class TextBoxEx : RichTextBox
      

  4.   

    我的自定义控件蛮多内容的,RichTextBox只是其中显示说明文字的部分,所以没有办法用这个继承。
    现在如果属性名不用Text,其实就可以,只是想搞清楚原因是什么,要怎么解决!
      

  5.   

    using System;
    using System.Windows.Forms;namespace WindowsFormsApplication6
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show(textBoxEx1.Text);
            }
        }    public class TextBoxEx : UserControl
        {
            private RichTextBox Detail;
            public TextBoxEx()
            {
                Detail = new RichTextBox();
                this.Controls.Add(Detail);
            }        public string DetailRtf
            {
                get { return Detail.Rtf; }
                set { Detail.Rtf = value; }
            }        public new string Text
            {
                get { return Detail.Text; }
                set { Detail.Text = value; }
            }
        }
    }
    哪里不行啊
      

  6.   

    这个论坛好像不能上传附件,您方便加我QQ860495425,或者发个Mail到[email protected]告诉我您的信箱吗?我可以直接发VS的控件项目文档给您看吗?我用new也是一样不行
      

  7.   

    你是想要Text在属性窗口显示出来?这样就行了
    [Browsable(false)]
    public override string Text
    {
      get { return Detail.Text; }
       set { Detail.Text = value; }
    }
      

  8.   

    谢谢!设置 [Browsable(true)]这样就可以了。
    另外一个问题,就是怎么按次序显示MyControl1,MyControl2,... ...应该怎么设置?
    我希望是自动生成的控件名显示在GroupBox的Text的地方,但现在的状况是自动显示在我的RichTextBox里面