我怎样才能订阅多个button到相同的事件处理程序,并根据button被点击的行为?

我有6个button,我想连接到相同的处理程序。 我该怎么做?

当你在一个button上订阅事件时,它只是一个标准的事件处理程序:

button1.Click += myEventHandler; 

您可以使用相同的代码为每个button添加处理程序:

 button1.Click += myEventHandler; button2.Click += myEventHandler; button3.Click += myEventHandler; button4.Click += myEventHandler; button5.Click += myEventHandler; button6.Click += myEventHandler; 

这将导致myEventHandler的处理程序在单击任何button时运行。

您可以通过将相同的方法绑定到每个button的单击事件来将相同的事件附加到多个button

 myButton1.Click += new MyButtonClick; myButton2.Click += new MyButtonClick; myButton3.Click += new MyButtonClick; myButton4.Click += new MyButtonClick; myButton5.Click += new MyButtonClick; myButton6.Click += new MyButtonClick; void MyButtonClick(object sender, EventArgs e) { Button button = sender as Button; //here you can check which button was clicked by the sender } 

只需将button连接到相同的事件:

 myButton1.Click += Button_Click; myButton2.Click += Button_Click; myButton3.Click += Button_Click; ... 

并相应地处理button:

 private void Button_Click(object sender, EventArgs e) { string buttonText = ((Button)sender).Text; switch (buttonText) { ... } } 

sender对象包含对导致Click事件的button的引用。 你可以将它转换回Button ,并访问你需要的任何属性来区分实际的button。

如何查看哪个button被按下:

使用sender

 Button myButton = (Button)sender; 

sender是事件处理程序中的objecttypes的参数。

而不是双击devise器中的事件,您可以将事件处理程序的名称粘贴到devise器属性网格中的事件中。

 myButton1.Click += new EventHandler(MyButtonClick); myButton2.Click += new EventHandler(MyButtonClick); myButton3.Click += new EventHandler(MyButtonClick); myButton4.Click += new EventHandler(MyButtonClick); myButton5.Click += new EventHandler(MyButtonClick); myButton6.Click += new EventHandler(MyButtonClick); public void MyButtonClick(object sender, MouseButtonEventArgs e) { switch ((sender as Button).Name) { case "button1": //actions break; case "button2": //actions break; default: break; } } 

我不是专家,但我使用它,它看起来很简单

 <Button x:Name="Button1" Content="Button" Click="Button_Click"/> <Button x:Name="Button2" Content="Button" Click="Button_Click"/> 

只要给两个button相同的点击事件