如何避免设计器中的按钮文本集
本文关键字:按钮 文本 何避免 | 更新日期: 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
{
//...
}
就是这样。现在,当您拖动按钮到窗体时,它将有默认文本"绿色",而不需要任何额外的编译。