将自定义控件中的事件动态添加到表单中

时间:2012-03-29 15:52:06

标签: c# winforms custom-controls custom-event

我有一个可以多次添加到表单的自定义控件。在同一表单上可以有多次出现此自定义控件。用户添加和删除这些控件。用户可以右键单击自定义控件内的某个控件来显示菜单。

从此菜单中选择项目时,应在表单上引发事件。我做了一个自定义事件,并意识到如果控件是动态添加的,它就无法使用,因为表单不知道它。我无法添加一个引用不存在的控件的事件处理程序。是否有其他方法可以从自定义控件上提升表单上的事件,而不需要表单来知道它?顺便说一句,我的自定义控件被添加到FlowLayoutPanel。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

添加控件时,您只需在代码中连接事件处理程序,例如

MyButton.Click += ButonClickEventHandler;
Page.Controls.Add(MyButton)

答案 1 :(得分:0)

同意本 - 否则,有一些混乱的方法(取决于您的控件的设置方式)。例如INotifyPropertChanged Inerface或通过Windows API消息传递(和监听器) - 但除非你有一个非常奇怪的设置,然后如Ben所说,只需在添加控件时添加一个处理程序。您始终可以使用通用回调方法并使用自定义事件参数来识别触发它的方法。