私は基本クラスと派生クラスを持っています。 基本クラスには、仮想保護されたボタンクリックメソッドを持つ単純なボタンがあります。なぜオーバーライドメソッドは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");
}
非常に不完全な質問。素敵なコードはいかがですか?考えられる間違いの1つは、メソッドをいくつかのイベントハンドラに2回サブスクライブすることです。 – CodesInChaos
メソッドをオーバーライドするときに既存のonclickイベントを削除してから、再度アタッチします。 –
はいくつかのコード例を提供できますか? – Tigran