我有一个图书馆。在图书馆中,我有一个背景颜色为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手动删除上述代码时,一切正常。
答案 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”,而无需任何其他编辑。