-2

ボタンが3つある場合、どのボタンがクリックされたかをどのように識別できるかを知りたいです。

ありがとうございます。それでは、お元気で

4

2 に答える 2

3

あなたのプログラムについては、3 つのボタンがあること以外は何も知りません。だから、ここに私たちのボタンがあります:

Button b1 = new Button();
b1.Name = b1.Text = "Button 1";
Button b2 = new Button();
b2.Name = b2.Text = "Button 2";
Button b3 = new Button();
b3.Name = b3.Text = "Button 3";

ここで、各ボタンをクリックすると、その名前を表示するメッセージ ボックスを開く必要があります。ここでButton_Clickイベントを使用します。各ボタンのClickイベントには、ボタンがクリックされたときに呼び出される固有のメソッドを設定することも、すべてのボタンで同じメソッドを使用することもできます。両方の方法を提供します。


方法 1: 各ボタンで同じ方法。このメソッドは、押されたボタンの名前を表示するだけです。

private void Global_Button_Click(object sender, EventArgs e)
{
    MessageBox.Show(((Button)sender).Name + " was pressed!");
}

ボタンがクリックされるたびに、このメソッドが呼び出され、ボタンがobject senderパラメーターとして渡されます。(Button)senderボタンとして使用する前にキャストする必要があることに注意してください。

やるべきことはまだ1つあります。これはボタンごとに自動的に呼び出されるのではなく、単なるメソッドです。代わりに、ボタンがクリックされたときにこれを呼び出すようにボタンに指示する必要があります。イベントの目的は次のとおりです。

b1.Click += Global_Button_Click;
b2.Click += Global_Button_Click;
b3.Click += Global_Button_Click;

方法 2: 各ボタンに固有の方法。このメソッドは、ボタンがボタンの名前を出力するだけではない場合にのみ必要です。そのため、ボタンのクリックでさまざまなボタンに固有の処理を行う必要がある場合は、これを使用します。

これは方法 1 と同じように機能しますが、すべてのボタンに対して 1 つの方法を定義する代わりに、それぞれに 1 つずつ、3 つの方法を定義します。

private void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Button 1 was pressed!");
    // here you can add more code which will be executed when button 1 is clicked
}

private void Button2_Click(object sender, EventArgs e)
{
    MessageBox.Show("Button 2 was pressed!");
    // code for button 2
}

private void Button3_Click(object sender, EventArgs e)
{
    MessageBox.Show("Button 3 was pressed!");
    // code for button 3
}

最後に、ボタンがクリックされたときにこれらのメソッドを使用するようにボタンに指示する必要があります。ここでもイベントを使用します。今回は、ボタンごとに異なる方法:

b1.Click += Button1_Click;
b2.Click += Button2_Click;
b3.Click += Button3_Click;
于 2013-02-23T12:19:34.953 に答える
1

通常、ボタンには個別のイベント ハンドラーがありますが、同じイベント ハンドラーを共有する 3 つのボタンがある場合は、コマンド名/コマンド引数を使用してそれらを区別します。イベント ハンドラーには、コマンド名とコマンド引数を収集できる CommandEventArgs があります。

于 2013-02-23T12:19:08.760 に答える