繁体   English   中英

C#中的UserControl中的Text属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM