如何为多个按钮创建事件处理程序?

时间:2014-02-05 07:21:29

标签: c# winforms event-handling

在我的C#项目中,我正在创建一个Hangman游戏,其中包含一组按钮,其中包含从A到Z的字母。单击时所有这些按钮将执行相同的方法。 我不想逐个为每个事件创建一个事件处理程序。 那么如何为所有这些按钮创建一个SINGLE事件处理程序呢?

3 个答案:

答案 0 :(得分:6)

为所有按钮订阅相同的处理程序,并使用sender获取引发事件的按钮:

void Button_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    // use Name or Tag of button
}

如果您的按钮被命名为字母A .. Z,那么您可以使用button.Name来获取信件。如果按钮的名称类似于buttonA ... buttonZ,则可以从button.Name获取子字符串以获取相关字母(或button.Name.Last())。如果按钮的名称与字母表无关,则可以使用按钮的Tag属性来设置并获取分配给每个按钮的字母。

答案 1 :(得分:1)

假设你有button1,button2,button3。您可以将所有按钮单击事件指向设计页面上的相同方法:

或在加载事件中

button1.Click+=button_Click;
button2.Click+=button_Click;
button3.Click+=button_Click;

and you write the method

private void button_Click(object sender, EventArgs e)
{
    var button=sender as Button;
    // your code

}

答案 2 :(得分:0)

这样的东西
private void Button_Click(object sender, EventArgs e)
    {
        Button b = (Button) sender;
        //button name
    }

msdn