C#中UserControl中的Text属性

我有一个内部TextBox的控件。 我想在UserControl的Text属性和TextBox的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 

反射器是.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;
    }
}

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


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

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
链接地址: http://www.djcxy.com/p/61991.html

上一篇: Text property in a UserControl in C#

下一篇: 'UserControl' constructor with parameters in C#