C# 从动态添加到窗体的自定义控件引发事件

C# 从动态添加到窗体的自定义控件引发事件,c#,winforms,custom-controls,custom-event,C#,Winforms,Custom Controls,Custom Event,我有一个自定义控件,可以多次添加到表单中。此自定义控件可以在同一窗体上多次出现。这些控件由用户添加和删除。用户可以右键单击自定义控件中的某些控件以显示菜单 从该菜单中选择项目时,应在窗体上引发一个事件。我创建了一个自定义事件,并意识到如果动态添加控件,它将不可用,因为表单不知道它。我无法添加引用不存在的控件的事件处理程序。是否有其他方法从自定义控件引发窗体上的事件,而不要求窗体知道它?顺便说一下,我的自定义控件被添加到FlowLayoutPanel中。 谢谢你的帮助 添加控件时,只需在代码中连接

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

从该菜单中选择项目时,应在窗体上引发一个事件。我创建了一个自定义事件,并意识到如果动态添加控件,它将不可用,因为表单不知道它。我无法添加引用不存在的控件的事件处理程序。是否有其他方法从自定义控件引发窗体上的事件,而不要求窗体知道它?顺便说一下,我的自定义控件被添加到FlowLayoutPanel中。
谢谢你的帮助

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

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

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

谢谢,我认为这会比这更复杂。这完全解决了我的问题。