我怎样才能订阅多个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相同的点击事件