2012-11-28 95 views
2

我有一組面板控件,它們以編程方式放置在我的表單中的各個位置。下面你可以看到,當我循環並增加I時,所有面板都使用相同的事件處理程序進行註冊。這對我來說很好,但我無法找到一種方法來告訴哪個面板在事件處理程序代碼中觸發了事件。我嘗試過使用sender,但我似乎無法弄清楚如何使用它。所以我的問題是我怎麼能分出哪個面板觸發事件,在事件處理程序代碼如何判斷哪個面板觸發了單擊事件

​​
+0

你能詞組的形式問題一個問題? –

+0

@瑞安·蓋茨編輯! – FrostyFire

回答

2
void Form1_Click(object sender, EventArgs e) 
{ 
    var panel = sender as Panel; 
    if (null != panel) 
    { 
     if (panel.Name.equals("Panel1")) 
     { 
      .. ... 
     } 
    } 
} 
+0

偉大的答案! +1 – FrostyFire

+1

我建議你跳過'是'檢查,只是安全地轉換'爲'並檢查爲空,如其他答案一樣。 – taylorjonl

+0

@taylorjonl記住它,謝謝! – FrostyFire

3

演員senderPanel第一:

void Form1_Click(object sender, EventArgs e) 
{ 
    Panel clickedPanel = sender as Panel; 
    if (clickedPanel != null) 
    { 
     // do something with clickedPanel 
    } 
} 
+0

應該工作,謝謝! +1 – FrostyFire

相關問題