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

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

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

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

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

假设你有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 } 

就像是

 private void Button_Click(object sender, EventArgs e) { Button b = (Button) sender; //button name } 

MSDN