【问题标题】:Raising event from custom control added dynamically to the form从自定义控件引发事件动态添加到表单
【发布时间】:2012-03-29 15:52:06
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我认为它会比这更复杂。这完全解决了我的问题。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 2012-05-16
      相关资源
      最近更新 更多