在一个语句中设置多个事件处理程序

Sti*_*kly 0 c# events c#-4.0

拥有这条线:

this.button1.Click += this.button2.Click += (s, e) => MessageBox.Show("Test");
Run Code Online (Sandbox Code Playgroud)

为什么这条线不起作用

无法隐式转换voidSystem.EventHandler

我们需要再多做一行来做这件事吗?但想象一下,如果我们有20个按钮

this.button1.Click += this.button(n).Click += MessageBox.Show("Test");
Run Code Online (Sandbox Code Playgroud)

我知道你会说什么:

您可以为每个按钮执行for(each)和...

但如果我需要选择我想要的按钮呢?

那么,为什么第一行代码不起作用,并存在这样的事情(以不同的方式写)

Jas*_*ins 5

是的,您需要单独向每个事件添加事件处理程序,并且错误消息正在告诉您确切原因.在C#中,this.button2.Click += (s, e) => MessageBox.Show("Test");不返回lambda值,因此没有任何内容可以添加到button1.Click事件中.

它也只是简单的坏风格.我必须两次阅读第一行才能意识到你在哪里尝试.你永远不应该牺牲清晰度来支持简洁.