![](/img/trans.png)
[英]C# custom TextChanged event handler for custom Text property for a UserControl?
[英]Text property in a UserControl in C#
我有一个带有内部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 { get; set; }
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)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.