1

ボタンのリストを作成している次のコードを見てみましょう。

List<System.Windows.Forms.Button> buttons = new List<System.Windows.Forms.Button>(); 

for(int i = 0; i < 5; i++) {
    buttons.Add(  System.Windows.Forms.Button>()  );
    buttons[i].Name = "button_" + i.ToString();
    this.Controls.Add(buttons[i]);
    buttons[i].Click += new System.EventHandler(this.Bt_windowClick);
}

次の部分は私が混乱しているところです。このデリゲートが呼び出されたら、実際にクリックされたボタンを教えてください。どうすればいいですか?

void Bt_windowClick(object sender, EventArgs e)
{
    // I would like to get the name of the button that was clicked
}

よろしくお願いします!

4

1 に答える 1

4

送信者オブジェクトは、イベントを発生させるボタンです。したがって、単純に次のようにキャストしButtonます。

void Bt_windowClick(object sender, EventArgs e)
{
    Button button = (Button)sender;
    // use button
    MessageBox.Show(button.Name);
}
于 2012-11-18T21:38:39.683 に答える