1

我对 C# 很陌生,我的作业有问题。对于某些按钮的单击事件,我有以下内容。对于单击事件,我想调用一个名为 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);
4

2 回答 2

1

您不调用button1_Click-当最终用户单击您的按钮时会调用它。检测按钮点击的系统部分知道如何使用一种方式通知您的程序点击:通过调用带有签名的方法

void OnClick(object sender, EventArgs e)

您不能在参数列表中添加或删除参数,或更改方法的返回类型:它必须与此签名精确匹配。

现在回到您的parameterB:您需要它来调用该functionA方法,但它不会传递给事件处理程序。那你怎么得到它?通常,答案是您将其存储在执行事件处理的对象的实例中:声明一个 type 的实例变量,double[]当您有足够的数据来设置它时设置它,然后从您的方法functionA内部传递它。button1_Click

于 2012-05-13T03:52:36.330 回答
0

当您尝试添加另一个参数时,事件处理程序不再匹配定义。EventHandler 用 2 个参数定义。

sender
   类型:System.Object
   事件的来源。

e
   类型:System.EventArgs
   一个不包含事件数据的 EventArgs。

您需要将parameterB设置为表单的属性或字段。然后,您将从事件处理程序内部获取parameterB

于 2012-05-13T04:10:39.530 回答