有这条线:
this.button1.Click += this.button2.Click += (s, e) => MessageBox.Show("Test");
为什么这条线不起作用
无法隐式将
void
类型转换为System.EventHandler
我们需要再多一行来做这件事吗? 但想象一下,如果我们有20个按钮
this.button1.Click += this.button(n).Click += MessageBox.Show("Test");
我知道你会说什么:
您可以为每个按钮执行for(each)和...
但如果我需要选择我想要的按钮呢?
那么,为什么第一行代码不起作用,并存在这样的事情(以不同的方式写)
答案 0 :(得分:5)
是的,您需要为每个事件单独添加事件处理程序,并且错误消息正在告诉您确切原因。在C#中,this.button2.Click += (s, e) => MessageBox.Show("Test");
不返回lambda值,因此没有任何内容可以添加到button1.Click
事件中。
它也只是简单的坏风格。我必须两次阅读第一行才能意识到你在哪里尝试。你永远不应该牺牲清晰度来支持简洁。
答案 1 :(得分:0)
如果要将三个或更多按钮连接到单个事件处理程序(内联或固定),则需要将它们放在单独的行上。
UPDATE hitcounts SET ip = INET6_ATON(INET_NTOA(ip));