C#中UserControl中的Text属性

yey*_*man 25 c# user-controls winforms

我有一个内部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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Han*_*son 45

您需要更多属性:

[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public override string Text { get; set; }
Run Code Online (Sandbox Code Playgroud)


Han*_*ant 15

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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