winform程序,自己建立类MyButton,继承自Button,设置text属性为“添加(&N)”,设计时,将其放置到窗体上时,该按钮文本显示MyButton1,怎样让其显示自定义的text,即“添加(&N)”?这样以后使用添加按钮时就不用改text属性了.在该类的如下方法中都加了this.Text = "添加(&N)";但仍然不起作用,经查发现,放置该按钮的窗体的.Designer.cs文件中自动增加了 this.myButton1.Text = "MyButton1";所以无论在MyButton类中怎样设置text,放置到窗体后,都被自动设置为MyButton1,该问题大家怎样解决?
public MyButton()
{
   InitializeComponent();
   this.Text = "添加(&N)";
}public MyButton(IContainer container)
{
   container.Add(this);
   InitializeComponent();
   this.Text = "添加(&N)";
}

解决方案 »

  1.   

    在Designer.cs文件中修改 this.myButton1.Text = "添加(&N)" ,估计可以吧
      

  2.   

    控件重写的时候将text属性赋值为"添加(&N)"
      

  3.   

        class MyButton : Button
        {
            public override string Text
            {
                get
                {
                    return "添加(&N)";
                }
                set
                {
                    base.Text = "添加(&N)";
                }
            }
        }
      

  4.   

    MyButton重写一下Text属性就可以了        public override string Text
            {
                get
                {
                    return "添加(&N))";
                }
                set
                {
                    base.Text = value;
                }
            }
      

  5.   


    谢谢大家,但这样写,如果放置到窗体后又需要对text稍作修改,却不能修改了。有时要对text稍作调整.
      

  6.   

    public override string Text { get  { return "添加(&N))"; } set  { base.Text = value; } }voerride
      

  7.   


    public class MyButton : Button
        {
            string text = "添加(&N))";
            public MyButton()
            {
                Text = "添加(&N)";
            }        public MyButton(IContainer container)
            {
                Text = "添加(&N)";
            }        public override string Text
            {
                get
                {
                    return text;
                }
                set
                {
    //默认代码是this.myButton1.Text = "myButton1"; 加个判断就好                if (!value.Contains("myButton"))                
                    {
                        text = value;
                        this.OnTextChanged(EventArgs.Empty);
                    }
                }
            }    }
      

  8.   


    谢谢,经实验,两个构造方法中不使用Text = "添加(&N)";也可以。请问这方面的内容什么书上有介绍,想学习学习。
      

  9.   

    这是系统默认的设计器的问题,默认的Text属性就是按照控件名称生成的,重载设计器即可public class mybuttonDesigner : ControlDesigner
    {
            public override void InitializeNewComponent(IDictionary defaultValues)
            {
                base.InitializeNewComponent(defaultValues);
                
                this.Control.Text = "xxxx";
            }
    }[Designer(typeof(mybuttonDesigner))]
    public class mybutton:Button
    {

    }