c#多个动态创建控件的事件处理程序

时间:2015-04-05 14:28:55

标签: c# event-handling controls dynamically-generated

我有一个可以创建1或10或584575的循环(例如,实际上不是真的)FlowLayoutPanels。对于所有这些面板,我想要一个悬停事件处理程序,或者稍后可能是另一种类型的事件处理程序,但现在只是悬停。

如何为多个相同类型创建的控件实现此目的?

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 个答案:

答案 0 :(得分:1)

您可以像这样附加处理程序

finalResult_panel.MouseHover += panel_MouseHover;

private void panel_MouseHover(object sender, EventArgs e) 
{

}

或者,您可以创建匿名代理

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

这些将为每个面板附加相同的处理程序,因此如果需要区分,可以在处理程序本身(使用sender属性)中执行此操作,或者在附加处理程序之前以某种方式区分。