C#でコントロールの配列を作成する場合、クリックされたボタンのインデックスを受け取る関数をクリックイベントにバインドするにはどうすればよいですか?
理解を深めるためだけにいくつかのコードを示します。コードのどこかでボタンを定義します。
Button [] buttons = new Button[100];
それらの標準のClickイベントは次のようになります。
private void myClick(object sender, EventArgs e)
{
}
そして通常、あなたはそれをこのようにバインドします:
for (int i = 0; i < 100; i++)
buttons[i].Click += myClick;
ただし、イベントハンドラーを次の形式にする必要があります。
private void myClick(int Index)
{
}
暫定関数の有無にかかわらず、クリックイベントを上記の関数にバインドするにはどうすればよいですか?
Func<T, TResult>
デリゲートや表記法を使用するか、クリックしたボタンのインデックスを含むカスタムEventArgsをなんとかして渡すことを考えました。しかし、C#に関する十分な知識がなかったため、成功しませんでした。
各コントロールのインデックスをタグに保存することを提案する場合:はい、可能でしたが、何らかのイベントをスローするクラスがあるが、プロパティなどにタグを付けると、この方法は役に立ちません。