2009-09-25 95 views
1

我在运行时将一个Panel对象数组(其中包含其他项)添加到窗体。于是,我像这样分配一个click事件给每个小组一个循环中:检测鼠标单击控件数组

pnlInstrument[index].Click += pnlInstrument_Click; 

空点击功能如下:

private void pnlInstrument_Click(object sender, EventArgs e) 
{ 

} 

该事件被触发正确的,但我怎么能告诉哪个面板被点击了?

回答

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); 
}  
+1

打我先生,先生。 +1;) – JustLoren 2009-09-25 19:39:06

+0

我把它归咎于过度曝光! – 2009-09-25 19:39:51

+0

中途有!我可以从数组中获取对象的索引吗? – 2009-09-25 19:43:07

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; 
} 
相关问题