我在运行时将一组 Panel 对象(它们又包含其他项目)添加到表单中。然后,我为循环内的每个面板分配一个点击事件,如下所示:
pnlInstrument[index].Click += pnlInstrument_Click;
空点击函数如下所示:
private void pnlInstrument_Click(object sender, EventArgs e)
{
}
事件触发正确,但我怎么知道点击了哪个面板?
我在运行时将一组 Panel 对象(它们又包含其他项目)添加到表单中。然后,我为循环内的每个面板分配一个点击事件,如下所示:
pnlInstrument[index].Click += pnlInstrument_Click;
空点击函数如下所示:
private void pnlInstrument_Click(object sender, EventArgs e)
{
}
事件触发正确,但我怎么知道点击了哪个面板?
使用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);
}
为什么不:
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;
}