2011-11-18 15 views
7

可能性の重複:私が閲覧可能なようUserControlTextプロパティをマークするにはどうすればよい
Text property in a UserControl in C#UserControlのTextプロパティを公開するにはどうすればよいですか?


.NET UserControlクラスはText性質を持っています。

残念ながらUserControlTextプロパティがbrowsableではありません。

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

私は、プロパティウィンドウで(すなわち、それは「ブラウズ可能」を作る)は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

ない、非常に正確な複製:ちょうどそれが変化したときにOnTextChangedをオーバーライドし、見つけるために[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

を追加します。私の質問は、プロパティをブラウズ可能にするための* how *(すなわち、ランダムなキーボードマッシングとは対照的に、適切な方法)でした。もう1つの質問は、すでにブラウズ可能であるが、シリアル化されていないプロパティです。 –

答えて

11

を変更したときに知っています。

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

完璧に優れています。 –

関連する問題