2015-04-05 73 views
0

我有一個循環可以創建1或10甚至可能584575(例如,實際上並非如此)FlowLayoutPanels。對於所有這些面板,我想要一個懸停事件處理程序,或者以後可能會使用另一種類型的事件處理程序,但現在只能懸停。c#事件處理程序用於多個動態創建的控件

我怎樣才能使這種情況發生相同類型創建控件?

FlowLayoutPanel finalResult_panel = new FlowLayoutPanel{ 
     FlowDirection = FlowDirection.LeftToRight, 
     BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle, 
     Name = "result_flowLayoutPanel" + i, 
     Size = new System.Drawing.Size(790, 72), 
     TabIndex = i, 
}; 

回答

1

您可以將這樣的

finalResult_panel.MouseHover += panel_MouseHover; 

private void panel_MouseHover(object sender, EventArgs e) 
{ 

} 

處理程序或者,你可以創建一個匿名委託

finalResult_panel_MouseHover += (s,e) => { 
              //event code 
             }; 

這些都將在同一處理器連接到每一個面板,所以如果你需要區分,您可以在處理程序本身(使用sender屬性)或在附加處理程序之前以某種方式進行區分。

+0

當你嘗試你的第一個選項,我得到'無效的初始化成員聲明',我不知道如何使用你的替代選項。 – 2015-04-05 14:52:28

+0

你需要把它放在你有的代碼之後,而不是在對象initalizer中。 – keyboardP 2015-04-05 14:59:12

+0

好的,作品謝謝!爲什麼不能在對象初始值設定項中?並可以解釋替代方法?我不明白如何實現。 – 2015-04-05 15:04:07

相關問題