2011-07-28 17 views
0

私は基本クラスと派生クラスを持っています。 基本クラスには、仮想保護されたボタンクリックメソッドを持つ単純なボタンがあります。なぜオーバーライドメソッドはC#で1回ではなく2回実行されますか?

ただし、派生クラスbuttonclickメソッド内のコードは、のではなく、二回実行し、私はovverrideキーワードを使用しています

(私は派生クラスでbuttonclickメソッドは、基本クラスのbuttonclickメソッドをオーバーライドしたいように、新しい使用していません)ここ

は、基本クラスのコード例

したら:派生において

this.ok.Click += new System.EventHandler(this.ok_Click); 
    protected virtual void ok_Click(object sender, EventArgs e) 
      { 
       MessageBox.Show("From the Base class"); 
      } 

クラス:

this.ok.Click += new System.EventHandler(this.ok_Click); 
protected override void ok_Click(object sender, EventArgs e) 
      { 
       MessageBox.Show("From the Derived class"); 
      } 
+0

非常に不完全な質問。素敵なコードはいかがですか?考えられる間違いの1つは、メソッドをいくつかのイベントハンドラに2回サブスクライブすることです。 – CodesInChaos

+0

メソッドをオーバーライドするときに既存のonclickイベントを削除してから、再度アタッチします。 –

+0

はいくつかのコード例を提供できますか? – Tigran

答えて

6

あなたが実際にbuttonclickメソッドを呼び出して何言っていないが、私はそれがイベントハンドラだ疑い...と私はあなたがサブクラスとベースクラスのコンストラクタの両方でそれに加入だ疑い。しないでください - あなたは一度購読する必要があります。

(付属していない場合、短いが完全な例を示してください。)

+0

はい、まさに私の問題です。Jonを並べ替えてくれてありがとうございました –

+0

あなたの答えはありがたいです!私はこれまで私自身でこれを見つけただろうかどうか分からない。 – TheJonz

関連する問題