我在Visual Studio中开发了一个用户控件(WinForms C#)并有一个问题。
我需要用户控件的用户能够更改某些字符串值,我希望他们能够将用户控件添加到他们的表单并单击它以显示我的用户控件的自定义属性窗格将显示属性。
如何为用户控件设置自己的自定义属性?例如:
我的用户控件包含一个TextBox,我希望用户能够通过设计时属性中名为“Text”或“Value”的属性更改该TextBox的值。
答案 0 :(得分:100)
您可以通过属性上的属性执行此操作,如下所示:
[Description("Test text displayed in the textbox"),Category("Data")]
public string Text {
get { return myInnerTextBox.Text; }
set { myInnerTextBox.Text = value; }
}
类别是属性将在Visual Studio属性框中显示的标题。 Here's a more complete MSDN reference,包括类别列表。
答案 1 :(得分:39)
这很简单,只需添加一个属性:
public string Value {
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
使用Text属性有点棘手,UserControl类intentionally hides。您需要覆盖属性以使其恢复正常工作:
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always), Bindable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text {
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
答案 2 :(得分:6)
只需将公共属性添加到用户控件即可。
您可以添加[Category("MyCategory")]
和[Description("A property that controls the wossname")]
属性以使其更好,但只要它是 public 属性,它就应该显示在属性面板中。