C#相当于VB.NET';处理按钮1。单击,按钮2。单击';

C#相当于VB.NET';处理按钮1。单击,按钮2。单击';,c#,.net,vb.net,winforms,C#,.net,Vb.net,Winforms,在这方面,我能做到 在C#.NET中有这样的方法吗?我有大约16个按钮,它们都调用相同的函数,只是将按钮的文本传递给函数。我宁愿不要16次单击私有无效按钮调用一个函数 不过我不知道该怎么做(对C不太熟悉)。C\35;没有句柄关键字。 相反,您需要显式添加处理程序: something.Click += button_click; somethingElse.Click += button_click; 试试这个: button1.Click += button_click; button2.C

在这方面,我能做到

在C#.NET中有这样的方法吗?我有大约16个按钮,它们都调用相同的函数,只是将按钮的文本传递给函数。我宁愿不要16次单击私有无效按钮调用一个函数

不过我不知道该怎么做(对C不太熟悉)。

C\35;没有
句柄
关键字。
相反,您需要显式添加处理程序:

something.Click += button_click;
somethingElse.Click += button_click;
试试这个:

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

您可以手动执行以下操作:

button1.Click += button_Click;
button2.Click += button_Click;
...
在设计器中,单击事件属性实际上是一个下拉菜单,您可以在其中选择具有适当签名的现有方法

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

答案是

如果您想保持它的可维护性,我会选择这样的方式:

//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)绑定到自定义按钮类
  • 您决定更改按钮收集方式的逻辑,添加或删除按钮
  • 您认为按钮单击是一个坏名字,或者需要有条件事件绑定

你应该给你的按钮命名。这些可以是经过消毒的名称,但我同意你的观点@SLaks。@SLaks按钮是名称-抱歉,我只是为了帖子的目的才给它们命名为button1 button2等。我希望如此,但我想确认一下。@SLaks我完全同意-我非常喜欢命名约定,讨厌阅读没有命名约定的代码或对代码进行故障排除。实际上,我从一个几乎所有函数都使用dimx,a,b,c作为字符串的家伙那里接管了一个vb6系统。暗淡的主建筑字符串是我鄙视的东西。驼色纽扣是我的正常习惯。谢谢你指出这一点。我也遇到过这个,我们叫它什么?例如,操作员过载?还是代表?等
btn1.Click += button_click;
btn2.Click += button_click;
//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;
}