[英]C# No overload for [Method] matches delegate 'System.EventHandler - Adding an extra parameter
我是C#的新手,我对作业有疑问。 对于某些按钮的单击事件,我具有以下内容。 对于click事件,我想调用一个名为functionA的函数,并使用一个名为parameterB的参数(双精度类型数组)。 附加参数导致了错误。 我这样做的正确方法是什么?
private void button1_Click(object sender, EventArgs e, double [] parameterB)
{
functionA(parameterB);
}
在Designer.cs的相应部分中
this.button1.Location = new System.Drawing.Point(386, 309);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(174, 27);
this.button1.TabIndex = 25;
this.button1.Text = "Calculate Final Grade";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
您不调用button1_Click
当最终用户单击您的按钮时会调用它 。 系统中检测按钮点击的部分知道如何使用一种精确的方式将点击通知给您的程序:通过调用带有签名的方法
void OnClick(object sender, EventArgs e)
您不能在参数列表中添加或删除参数,也不能更改方法的返回类型:它必须与该签名完全匹配。
现在回到您的parameterB
:您需要它来调用functionA
方法,但不会传递给事件处理程序。 那你怎么得到的呢? 通常,答案是将其存储在执行事件处理的对象的实例上:声明类型为double[]
的实例变量,在有足够的数据可以设置它时将其设置,然后将其从button1_Click
内部传递给functionA
方法。
当您尝试添加另一个参数时,事件处理程序不再与定义匹配。 EventHandler用2个参数定义。
发件人
类型:System.Object
事件的来源。
Ë
类型:System.EventArgs
一个不包含事件数据的EventArgs。
您需要将parameterB设置为表单的属性或字段 。 然后,您将从事件处理程序内部获取parameterB 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.