2009-07-13 3 views
0

TextBoxから継承するCurrencyTextBoxを作成しようとしています。私はちょうど理解していないいくつかの本当に奇妙な行動を見ている。カスタムTextBoxのベーステキストメソッドを呼び出す

クラスのコードでは、私はbase.Textを(テキストボックスのテキストを取得するために)アクセスしたときに、私は実際に私の戻り値を取得しています:

テストの多くの後、私は次のように私がまとめることができると思いますTextプロパティをオーバーライドします。

私は、基本のキーワードは、基礎となるオブジェクトのメソッドが呼び出されることを確実にすると考えました。フォーム上


public class cTestTextBox : System.Windows.Forms.TextBox 
    { 
     string strText = ""; 

     public cTestTextBox() 
     { 
      SetVal("AAA"); 
      base.Text = "TEST"; 
     } 
     public override string Text 
     { 
      get 
      { 
       string s = strText; 
       s = "++" + s + "++"; 
       return s; 
      } 
     } 
     public void SetVal(string val) 
     { 
      strText = val; 
     } 
    } 

置き、このコントロールをし、コンストラクタにブレークポイントを設定:実証するために

。アプリを実行します。マウスをbase.Text式の上に移動します。ツールチップには、ベースプロパティではなく、オーバーライドされたプロパティの値が表示されます。 SetVal()ステートメントを実行し、再度base.Text式の上にマウスを移動します。ツールバーには、基本プロパティではなく、オーバーライドされたプロパティの値が表示されます。

私が継承しているテキストボックスのTextプロパティには、どのようにして確実にアクセスできますか?

答えて

0

興味深い。 「削除された」ポストに何が起こったのかはっきりしないが、正しいトラックにいたかもしれない。いくつかのベースクラスがあなたの.Textを呼び出しているかどうかを調べるには、何が起こっているのかを無限ループの原因となる.Textに入れます。

public override string Text 
{ 
    get 
    { 
     return base.Text; 
    } 
} 
関連する問題