Visual Studio を使用すると、イベント (ボタン クリックなど) のメソッドを簡単に作成できます。3 つのボタンのいずれかがクリックされたとき、または多くのテキスト ボックスの 1 つが入力されたときにいつでも実行されるメソッドなど、複数のイベント用のメソッドを作成する方法はありますか?
4 に答える
メソッドを作成すると、同様のシグネチャを持つ他のイベントに使用できるようになります。
Designerから、メソッドをダブルクリックせずに、選択したイベントに割り当てることができる既存のイベントハンドラーのリストをドロップダウンします。
object sender
@lcfsethのメモと同様に、引数を介してどの特定のコントロールがメッセージを送信したかを識別できます。
はい、多くのイベントを同じメソッドにバインドできます(同じ署名のイベント)
firstEvent += MyMethod;
secondEvent += MyMethod
関数をオブジェクトのイベントにバインドすると、実際にはデリゲート(つまり、関数へのポインター)がそのイベントハンドラーに渡されます。必要なデリゲートの署名が対応している限り、同じ関数を必要な数のオブジェクトのイベントハンドラーにバインドできます。
Button1.Click += new EventHandler(this.AnyButton_Click);
Button2.Click += new EventHandler(this.AnyButton_Click);
Button3.Click += new EventHandler(this.AnyButton_Click);
クリックされたボタンに応じて「sender」オブジェクトに対して特定の操作を実行する必要がある場合は、関数の引数「sender」がクリックしたボタンであることに注意してください。ボタンオブジェクトで作業する必要がある場合は、必ずボックスを解除してください。特定のクラス(つまり、Buttonまたはそのタイプにキャストします)。
void AnyButton_Click(Object sender, EventArgs e)
{
Button clickedButton = (Button)sender; // unbox the sender
MessageBox.Show("You just clicked button " clickedButton.Text);
}
(MSDN)
複数のコントロールのClickイベントに同じハンドラーを割り当てることができます。送信者は、イベントを引き起こしたコントロールを指します。