用户控制 – 自定义属性

我已经在Visual Studio(WinForms C#)中开发了一个用户控件,并且有一个问题。

我需要我的用户控件的用户能够更改某些string值,我希望他们能够将用户控件添加到他们的窗体,然后单击它以调出属性窗格,其中我的用户控件的自定义属性将显示。

我怎样才能有我自己的用户控件的自定义属性? 例如:

我的用户控件包含一个TextBox,我希望用户能够通过Design-Time属性中名为“Text”或“Value”的属性来更改该TextBox的值。

你可以通过属性上的属性来做到这一点,比如:

[Description("Test text displayed in the textbox"),Category("Data")] public string Text { get { return myInnerTextBox.Text; } set { myInnerTextBox.Text = value; } } 

该类别是属性将出现在Visual Studio属性框中的标题。 这是一个更完整的MSDN参考 ,包括一个类别列表。

这很简单,只需添加一个属性:

 public string Value { get { return textBox1.Text; } set { textBox1.Text = value; } } 

使用Text属性有点棘手,UserControl类有意隐藏它。 你需要重写属性:

 [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] public override string Text { get { return textBox1.Text; } set { textBox1.Text = value; } } 

只需将公共属性添加到用户控件。

您可以添加[Category("MyCategory")][Description("A property that controls the wossname")]属性[Description("A property that controls the wossname")]属性,使其更好,但只要它是一个公共属性,它应该显示在属性面板中。