トップ回答者
コントロールのイベント処理の中で関数を呼び出すときに渡す引数?

質問
-
いつもお世話になっています。
少し長くなっていますが勘弁願います。
12個のボタンを配列にいれ、3つのボタンイベントを一括処理しています。
//ボタンコントロール配列を作成
this.btnArray = new Button[12];
//ボタンコントロールの配列に代入
this.btnArray[0] = this.btnEnd;
this.btnArray[1] = this.btnInp;---------
this.btnArray[11] = this.btnKosin;
//イベントハンドラに関連付け
for (int i = 0; i < this.btnArray.Length; i++)
{
this.btnArray.Click += new System.EventHandler(this.btnArray_Click);
this.btnArray.MouseLeave += new System.EventHandler
(this.btnArray_MouseLeave);
this.btnArray.MouseEnter += new System.EventHandler
(this.btnArray_MouseEnter);
}3つのイベントの最初に、どのボタンかを特定しています。
private void btnArray_Click(object sender,EventArgs e)
{
//クリックされたボタンのインデックス番号を取得する
int index = -1;
for (int i = 0; i < btnArray.Length; i++)
{
if (btnArray.Equals(sender))
{
index = i;
break;
}
}--------------
}
この緑の部分を関数にして呼び出そうとしています。
private static int returnIndex(ア***********)
{
//クリックされたボタンのインデックス番号を取得する
int index = -1;
for (int i = 0; i < btnArray.Length; i++)
{
if (btnArray.Equals(sender))
{
index = i;
break;
}
}
return i;
}private void btnArray_Click(object sender,EventArgs e)
{
//クリックされたボタンのインデックス番号を取得する
int index;index=retunIndex(イ********);
}アとイの「何を渡し、何を受け取るのか」肝心なところがわからずに困っています。
どうぞよろしくお願いします。
*電球マークのところは、[]です。
どのように書くと、取れるのでしょう?
回答
すべての返信
-
ご存知かもしれませんが Array クラスには指定したオブジェクトのインデックスを返すメソッドが用意されています。
それを使用すれば次の用に書く事でも同じ結果を取得することができます。Array.IndexOf メソッドを使用した例int index = Array.IndexOf(this.btnArray, (Button)sender);