C#中UserControl的文本属性

29

我有一个带有内部TextBox的控件。我想直接将UserControl的Text属性与TextBox的Text属性建立联系。我发现在UserControl的属性中没有显示Text属性。然后我添加了Browsable(true)属性。

[Browsable(true)]
public override string Text
{
    get
    {
        return m_textBox.Text;
    }

    set
    {
        m_textBox.Text = value;
    }
}

现在,文本会被显示一段时间,然后被删除。这是因为信息没有自动写入xxxx.Designer.cs文件中。如何改变这种行为?

3个回答

53

你需要更多的属性:

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

别忘了在添加属性后重新构建,以便更改在设计器中显示。 - Bip901

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;
    }
}

Ho告诉了你如何取消这些属性,但很遗憾他没有告诉你他是如何找到的。反编译工具Reflector曾经是免费的,你可以从redgate.com下载它或在这里查看其他替代方案。


Hans,感谢你的建议。然而,我必须接受Ho的答案,因为它也是正确的,并且它是更早写的。谢谢! - yeyeyerman

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接