【发布时间】:2014-03-18 16:45:32
【问题描述】:
我在这里尝试做的非常简单,但它对我不起作用。我在 stackoverflow 和其他人上查找了许多非常相似或匹配的问题示例,但他们的解决方案对我不起作用。
基本上(以非常简化的形式),我有一个按钮,里面有一些文字。我想要它,所以当单击此按钮时,会出现一个显示文本的消息框。但是,我有 9 个这样的按钮(想想计算器上的数字),我想创建一个处理所有这些点击的方法,并根据按钮输出正确的文本。这就是为什么我需要将按钮作为参数传递。
这是我目前处理它的方法的代码:
private void btn_Click(object sender, EventArgs e, Button b)
{
MessageBox.Show(b.Text);
}
上面的小代码sn-p是其他人使用过的相同的解决方案。但是,对我来说,这段代码无法编译并显示一个错误,提示 'btn_Click' 没有重载匹配委托 'System.EventHandler'。
当我双击该错误时,它会将我带到表单的 Designer.cs 页面,这是出现错误的代码行:
this.btnN7.Click += new System.EventHandler(this.btnN7_Click);
我不知道重载和委托部分是什么意思,对不起,我对此很陌生。我在想也许重载与构造函数有关,但即使这是正确的,我也不确定下一步会是什么。
我已正确包含 System.Windows.Forms;,因此问题不应该是无法识别 Button 对象。
如果您能提供任何关于我遗漏或做错了什么的见解,那就太好了!如果您需要任何其他信息以继续,请告诉我。
最后,这与我的问题无关,但自从我一周前开始使用 VS 以来,这是一个一直困扰我的小问题:控制参数是 object sender 和 EventArgs e 是为控制器事件自动创建的,甚至是必要的?我在网上查找的大多数示例都省略了它们。我只是保留它们,因为它们是默认创建的,但我真的不知道它们提供什么样的功能,而且我从来没有在我的方法中使用这些参数。
谢谢大家! =)
【问题讨论】: