2009-07-15 15 views

答えて

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))"を呼び出します。

+0

+1これは私が探していた答えでした。 –