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

时间:2012-03-23 21:06:31

标签: c# winforms c#-4.0

我有一个图书馆。在图书馆中,我有一个背景颜色为Green且文字为Go Green的按钮。

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

我的图书馆看起来像:

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

我发现它正在发生,因为在表单的构造函数中调用了InitializeComponent()方法。在designer.cs中,

button.Text = "button1";

被调用。我该怎样才能避免这种情况发生。我想从我的班级图书馆看到我的文字。

注意:当我从designer.cs手动删除上述代码时,一切正常。

1 个答案:

答案 0 :(得分:4)

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

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

Designer将添加默认按钮名称,但在构建应用程序时,将显示您的文本。

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

首先:为按钮创建控件设计器

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
{
   //...
}

就是这样。现在,当您将按钮拖动到窗体时,它将具有默认文本“Go Green”,而无需任何其他编辑。