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)]