ChP*_*ChP 2 c# attributes properties windows-forms-designer winforms
我想为设计时可浏览的窗体创建一个自定义属性,但我的努力都没有成功.显而易见的解决方案似乎是将browsable属性设置为true:
[Browsable(true),
EditorBrowsable(EditorBrowsableState.Always),
Description("Custom Border Colour"),
Category("Custom")]
public Color BorderColour
{
get
{
return bCol;
}
set
{
bCol = value;
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我已经为自定义控件做了很多次,它就像一个魅力,事实上,我甚至不需要添加属性,因为默认是真的.这个代码项目文章似乎做了我想要的,这就是我上面所描述的.MSDN也是一个死胡同,或者我不知道要搜索什么.
我试图添加代码Form1.cs,From1.Designer.cs但没有任何作用.
是否有一些我缺少的东西,比如我需要为表格设置的某些属性,或者它是不可能的?
我正在使用Visual Studio Express 2013,如果这会以任何方式影响结果.
编辑:在Reza回答后的尝试:根据Reza的建议,在这个问题中提出了关于这个主题的更详细的问题.
简短的回答
您应该将属性添加到表单的基类,然后在打开子表单时可以在设计器中看到它:
public class Form1 : BaseForm
{
public Form1()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
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;}
}
Run Code Online (Sandbox Code Playgroud)
这种行为背后的原因
原因在于设计师的工作方式.当设计者在设计时显示表单时,实际上它会创建表单基类的实例并显示其属性.因此,public class Form1:Form在设计器中,您在设计器中看到的实际上是Form类的实例和控件的实例,其中属性的值已经使用使用InitializeComponent方法Form1和使用InitializeComponent方法添加的控件来设置Form1.
此外,对于用户控件,您无法在用户控件的设计器中看到自定义属性,因为您可以在用户控件的设计器中看到的属性是其基类的属性.但是当您在表单上放置用户控件的实例时,您将看到该实例的属性,这是您的属性UserControl1.
设计器的根元素的属性是根元素的基类的属性.但是这些值恰好是设置的值InitializeComponent.
要查找更多信息并查看设计师如何工作的有趣示例,您可以查看此文章或此文章.
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |