如何为多个按钮创建事件处理程序?
在我的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
来获取字母。 如果按钮的名称类似于buttonA
… buttonZ
,则可以从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