如何避免设计器中的按钮文本集

本文关键字:按钮 文本 何避免 | 更新日期: 2023-09-27 18:28:46

我有一个库。在库中,我有一个背景色为Green、文本为Go Green的按钮。

现在我做了一个winform项目,并在表单中拖动了我的Go green按钮。在运行应用程序时,我注意到按钮颜色变为绿色,但文本显示为button1(类库名称)。

我的库看起来像:

public class button : Button
{
    public Seats()
    {
        button.BackColor = Color.Green;
        button.Text = "Go Green";
    }
}

我发现这是因为InitializeComponent()方法是在表单的构造函数中调用的

button.Text = "button1";

被调用。我该如何避免这种情况发生。我希望我的文本在我的类库中可见。

注意:当我手动从designer.cs中删除上述代码时,一切都很好。

如何避免设计器中的按钮文本集

最简单的方法-覆盖按钮的Text属性并使其对设计器序列化隐藏:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Text
{
    get { return base.Text; }
    set { base.Text = value; }
}

设计器将添加默认按钮名称,但当您生成应用程序时,将显示您的文本。

更新:另一种(更难的)方式-为按钮提供给设计器默认属性值。在这种情况下,您需要引用System.Design.dll,它仅适用于.net framework的完整版本(而不是客户端配置文件版本)。

第一:为您的按钮创建控件设计器

public class GoGreenButtonDesigner : System.Windows.Forms.Design.ControlDesigner
{
    public override void OnSetComponentDefaults()
    {
        base.OnSetComponentDefaults();
        Control.Text = "Go Green";
    }
}

最后:将Designer属性添加到自定义按钮类

[Designer(typeof(GoGreenButtonDesigner))]
public class GoGreenButton : Button
{
   //...
}

就是这样。现在,当您拖动按钮到窗体时,它将有默认文本"绿色",而不需要任何额外的编译。