簡體   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