1

実行時に、Panelオブジェクトの配列(他のアイテムを含む)をフォームに追加しています。次に、次のようにループ内の各パネルにクリックイベントを割り当てます。

pnlInstrument[index].Click += pnlInstrument_Click;

空のクリック関数は次のようになります。

private void pnlInstrument_Click(object sender, EventArgs e)
{

}  

イベントは正しくトリガーされていますが、どのパネルがクリックされたかを確認するにはどうすればよいですか?

4

2 に答える 2

5

senderイベントメソッド のパラメータを使用します。

private void pnlInstrument_Click(object sender, EventArgs e)
{
    Panel panel = (sender as Panel); //This is the panel.
}

編集: インデックスを取得するためのコメント用。

private void pnlInstrument_Click(object sender, EventArgs e)
{
    Panel panel = (sender as Panel); //This is the panel.
    int panelIndex = Array.IndexOf(pnlInstrument, panel);
}    
于 2009-09-25T19:38:24.870 に答える
0

なぜだめですか:

pnlInstrument[index].Click += pnlInstrument_Click;
pnlInstrument[index].Tag += index;

private void pnlInstrument_Click(object sender, EventArgs e)
{
    Panel pnl = (Panel)sender;
    int index = (int)pnl.Tag;
}
于 2009-09-25T19:46:54.230 に答える