2011-11-18 69 views
7

可能重複:
Text property in a UserControl in C#如何公開UserControl的Text屬性?

如何標記UserControl可瀏覽的Text財產?


一個.NET UserControl類有一個Text屬性。

不幸的是,UserControlText屬性不是browsable

// 
// 
// Returns: 
//  The text associated with this control. 
[Bindable(false)] 
[EditorBrowsable(EditorBrowsableState.Never)] 
[Browsable(false)] 
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public override string Text { get; set; } 

在我UserControl揭露Text屬性(即使其 「可瀏覽」)在屬性窗口。我試圖盲目地宣佈它可瀏覽:

[Browsable(true)] 
public override string Text { get; set; } 

現在它出現在屬性窗口中,除了現在什麼都不做。

我試着打電話一味向base.Text帶回功能:

[Browsable(true)] 
public override string Text { get {return base.Text;} set { base.Text = value; this.Invalidate(); } } 

,現在酒店在設計時做的功能,但該屬性值不會保持到Form.Designer.cs和它的InitalizeComponent代碼。

什麼是揭露UserControlText屬性,使之在正確方式:

  • 可瀏覽屬性窗口
  • 是功能
  • 在窗體設計器是堅持

並作爲獎勵

  • 知道什麼時候改變
+1

不太精確複製。我的問題是*如何*(即適當的方式,而不是我的隨機鍵盤混合)使財產可瀏覽。另一個問題是已經可瀏覽的屬性,但未被序列化。 –

回答

11

你在正確的軌道上;只需添加[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

要找出當它改變時,覆蓋OnTextChanged

protected override void OnTextChanged (EventArgs eventArgs) 
{ 
    System.Diagnostics.Trace.WriteLine("OnTextChanged(): eventArgs: " + eventArgs); 
    base.OnTextChanged(eventArgs); 
} 
+0

非常好。 –

相關問題