我怎样才能订阅多个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
是事件处理程序中的object
types的参数。
而不是双击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相同的点击事件