gpt4 book ai didi

c# - 设计时 Form 的自定义可浏览属性

转载 作者:行者123 更新时间:2023-11-30 20:20:27 25 4
gpt4 key购买 nike

我想在设计时为可浏览的 Windows 窗体创建一个自定义属性,但我的所有努力都没有取得成功。显而易见的解决方案似乎是将 browsable 属性设置为 true:

[Browsable(true),
EditorBrowsable(EditorBrowsableState.Always),
Description("Custom Border Colour"),
Category("Custom")]
public Color BorderColour
{
get
{
return bCol;
}
set
{
bCol = value;
}
}

但这行不通。我已经为自定义控件做了很多次,它就像一个魅力,事实上,我什至不需要添加属性,因为默认值为 true。这codeproject文章似乎做了我想要的,这就是我上面描述的。 MSDN也是死路一条,还是不知道该搜什么。

我尝试将代码添加到 Form1.csFrom1.Designer.cs 但没有任何效果。

我是否遗漏了什么,比如我需要为表单设置一些属性以允许这样做,还是根本不可能?

如果这会以任何方式影响结果,我正在使用 Visual Studio Express 2013。


编辑:Reza 回答后的尝试: this question 中提出了关于此主题的更详细问题。根据 Reza 的建议。

最佳答案

简答

您应该将该属性添加到表单的基类中,然后您可以在打开子表单时在设计器中看到它:

public class Form1 : BaseForm
{
public Form1()
{
InitializeComponent();
}
}
public class BaseForm : Form
{
//The property is not visible in designer of BaseForm
//But you can see it in designer of Form1

public string SomeProperty {get;set;}
}

此行为背后的原因

原因在于设计师的工作方式。当设计者在设计时显示一个窗体时,实际上它创建了窗体基类的一个实例并显示了它的属性。因此,在设计器中使用 public class Form1:Form,您在设计器中看到的实际上是 Form 类的实例和已使用 using 设置属性值的控件实例Form1InitializeComponent 方法以及使用Form1InitializeComponent 方法添加的控件。

同样对于用户控件,您无法在用户控件的设计器中看到您的自定义属性,因为您可以在用户控件的设计器中看到的属性是其基类的属性。但是,当您将用户控件的实例放在窗体上时,您将看到该实例的属性,即 UserControl1 的属性。

设计器根元素的属性是根元素基类的属性。但这些值正是在 InitializeComponent 中设置的值。

要查找更多信息并查看设计师工作方式的有趣示例,您可以查看此 postthis one .

关于c# - 设计时 Form 的自定义可浏览属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36715648/

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