C#中UserControl中的Text属性

我有一个内部TextBox控件。 我想在UserControl的Text属性和TextBox的Text属性之间建立直接关系。 我意识到的第一件事是Text没有显示在UserControl的属性中。 然后我添加了Browsable(true)属性。

[Browsable(true)] public override string Text { get { return m_textBox.Text; } set { m_textBox.Text = value; } } 

现在,文本将显示一段时间,但随后会被删除。 这是因为信息不会自动写入xxxx.Designer.cs文件中。 如何改变这种行为呢?

您需要更多属性:

 [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Bindable(true)] public override string Text 

Reflector是.NET开发人员的重要工具。 当您使用它来查看UserControl.Text属性时,您需要立即做什么:

 [Bindable(false), EditorBrowsable(EditorBrowsableState.Never), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public override string Text { get { return base.Text; } set { base.Text = value; } } 

Ho向你展示了取消这些属性需要做些什么,太糟糕了,他没有告诉你他是如何发现的。 Reflector 免费的,从redgate.com下载或检查替代方案: 比.NET Reflector更好的东西?

对于InitializeComponent()序列化,您只需要DesignerSerializationVisibilityAttribute :

 [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]