2

定型コードで次の引数が何度も繰り返されているのを目にしましたが、まだそれらを使用していないようです。

(object sender, EventArgs e)

たとえば、新しいボタンをダブルクリックすると、イベントのメソッドにこれらの引数がありますが、メソッドにコードを追加するときに引数を使用しません。

それらは何ですか、いつ使用しますか?

4

1 に答える 1

7

送信者はイベントの発信者です。そのため、たとえば、同じクリック ハンドラーを使用する複数のボタンがあり、クリックされたボタンを無効にしたい場合があります。もちろん、イベント ハンドラーを使用して 1 つのソースのイベントをサブスクライブするだけでは、あまり役に立ちません。

EventArgs情報がないため、それ自体はまったく無意味ですが、情報 (キーボードやマウスの情報など) を持つ他のクラスの基本クラスとして使用されます。存在することの良い点は、その追加情報が必要ない場合は、パターンに従う任意のイベントをサブスクライブするために使用できる単一のイベント ハンドラーを作成できることです。例えば:

button.Click += LogEvent;     // EventHandler delegate type
textArea.KeyDown += LogEvent; // KeyEventHandler delegate type

...

private static void LogEvent(object sender, EventArgs ignored)
{
    Control control = (Control) sender;
    Log("Event fired by " + control.Name);
}
于 2012-05-02T07:07:06.697 に答える