1

私はC#を初めて使用し、宿題に問題があります。いくつかのボタンのクリックイベントについて、次のものがあります。クリックイベントの場合、ダブルタイプの配列であるparameterBという名前のパラメーターを使用してfunctionAという名前の関数を呼び出します。追加のパラメータが原因でエラーが発生しました。これを行うための正しい方法は何ですか?

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呼び出すのではなく、エンドユーザーがボタンをクリックすると呼び出されます。ボタンのクリックを検出するシステムの部分は、正確に 1 つの方法を使用してプログラムにクリックを通知する方法を知っています。

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 に答える