gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:08:08 26 4
gpt4 key购买 nike

我有一个图书馆。在库中,我有一个背景色为 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";

被调用。我怎样才能避免这种情况发生。我希望我的文本在我的类(class)图书馆中可见。

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

最佳答案

最简单的方法 - 覆盖按钮的 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”,无需任何额外的编译。

关于c# - 如何避免设计器中的按钮文本集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com