【问题标题】:How to expose/bubble events to outside in Composite Winforms Controls?如何在 Composite Winforms 控件中向外部公开/冒泡事件?
【发布时间】:2011-11-16 21:48:37
【问题描述】:

我有一个带有 3 个按钮的 CompositeControl,我不想让这些按钮成为我的 CompositeControl 的公共成员。但我也想单独公开他们的 Click 事件,以便该控件的用户可以订阅它们。

如果不在我的控件中复制相同的事件并分别引发每个按钮的 Click 事件,我不确定如何做到这一点。

【问题讨论】:

    标签: c# .net winforms events custom-controls


    【解决方案1】:

    如果不在我的控件中复制相同的事件并分别引发每个按钮的 Click 事件,我不确定如何做到这一点。

    这确实是处理这个问题的正确方法。您会想要复制该事件,但要给它一个新的、正确的名称。

    通常,这意味着使用与按钮活动相关的名称而不是按钮本身来公开“点击事件”。例如,如果您有一个刷新按钮,我会将事件公开为:

    public event EventHandler RefreshRequested;
    

    然后,在内部,您将监听按钮的单击事件并引发刷新请求事件。这也为您提供了稍后更改内部表示的灵活性(例如,如果您想使用按钮以外的其他东西)。

    【讨论】:

    • 谢谢里德。我不确定如何将复合控件的主事件与内部事件联系起来。当用户订阅我的事件时,我会将相同的事件分给内部的事件吗?
    • @JoanVenge 最简单的方法是始终订阅内部事件(即:在您的构造函数中),并将它们冒泡到您的主事件中。引发事件的标准事件处理将防止未处理的订阅者引起任何问题...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多