DataGridviewのような継承されたコントロールにイベントハンドラを追加する必要がありますが、Visual Studioでは許可されていません。継承されたコントロールがベースイベントハンドラと継承されたイベントハンドラを起動する方法はありませんか?私は指定した順序で?継承されたwinformコントロールにイベントハンドラを追加する方法?
0
A
答えて
1
あなたの質問は不明です。継承されたコントロールで基本クラスのイベントを処理しようとしている場合、On EventName保護された仮想メソッドをオーバーライドできます。オーバーライドでは、基本メソッドを呼び出すか、イベントが発生しないようにしてください。
このメソッドは、System.Windows.Forms内のすべてのコントロールのすべてのイベントに対して存在します(AFAIK)。継承しているコントロールにこの仮想メソッドがない場合は、コンストラクタの通気口に登録することができます。
例えば:
class MyButton : Button {
//First way
protected override void OnClick(EventArgs e) {
base.OnClick(e); //Without this line, the event won't be fired
//...
}
//Second way
public MyButton() {
base.Click += Base_Click;
}
void Base_Click(object sender, EventArgs e) {
//...
}
}
EDIT:
あなたは基本クラスのイベントを発生させるためにしようとしている場合は、 EVENTNAME方法では、これらを呼び出すことができます。
基本クラスに1つもない場合は、新しいイベントを宣言し、新しいイベントを発生させる基本クラスの元のイベントにハンドラーを追加するしかありません。ベースクラスのイベントを使用する他のコードがあり、evnetがvirtual
ではなく、ライザーメソッドを持たない場合は、ベースクラスを逆コンパイルしてイベントがどこであるかを調べることができない限り、上昇する。
1
WinFormsのイベントには、通常、対応する "On *"メソッドがあります。単にそのメソッドを呼び出すと、イベントが発生します。たとえば、 "CellClick"を呼び出す場合は、 "base.OnCellClick(new DataGridViewCellEventArgs(row、column))"を呼び出します。
+1これは私が探していた答えでした。 –