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 回答