C#相当于VB.NET'Handles button1.Click,button2.Click'

时间:2011-11-23 16:30:26

标签: c# .net vb.net winforms

VB.NET我能做到

private sub button_click(sender, e) handles Button1.Click, Button2.Click etc...
do something...
end sub

C#.NET中是否有这样的方法?我有大约16个按钮,它们都调用相同的功能,只是将按钮的文本传递给函数。我宁愿没有16 private void button_clicks调用一个函数。

我不知道该怎么做(不熟悉C#。)

6 个答案:

答案 0 :(得分:10)

Button1.Click += button_click;
Button2.Click += button_click;

答案 1 :(得分:7)

手动,你可以这样做:

button1.Click += button_Click;
button2.Click += button_Click;
...

在Designer中,Click事件属性实际上是一个下拉菜单,您可以在其中选择具有相应签名的现有方法。

答案 2 :(得分:5)

C#没有Handles关键字 相反,您需要明确添加处理程序:

something.Click += button_click;
somethingElse.Click += button_click;

答案 3 :(得分:4)

试试这个:

button1.Click += button_click;
button2.Click += button_click;

答案 4 :(得分:2)

如果你想让它保持可维护性,我会选择这样的东西:

//btnArray can also be populated by traversing relevant Controls collection(s)
Button[] btnArray = new Button[] {button1, button2};
foreach(Button btn in btnArray) {
  btn.Click += button_Click;
}

对此代码的任何重构都是通过单点维护完成的。例如:

  • 您决定使用自定义事件绑定到自定义按钮类,即MyClick。
  • 您决定更改按钮的收集方式,添加或删除按钮。
  • 你认为button_Click是一个错误的名字,或者需要有条件事件绑定。

答案 5 :(得分:1)

btn1.Click += button_click;
btn2.Click += button_click;

是答案