2015-04-05 41 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

相关问题