如何声明一个强制事件

本文关键字:一个 事件 声明 何声明 | 更新日期: 2023-09-27 18:01:15

我有一个用户控件,它有一个上下文栏,在每次右键单击时显示。当用户选择这个菜单上的一个项目时,我必须将这个信息传递给父控件,这样它才能根据这个做出反应。

所以我需要父节点强制订阅这个事件。有办法知道吗?

如果没有办法做到这一点,我应该抛出一个异常或只是检查null值(事件处理程序),什么也不做?

谢谢。

如何声明一个强制事件

没有办法在编译时强制执行这一点-这意味着。net框架/c#语言中没有任何东西可以在编译时执行静态检查以确保在代码中实现此逻辑。

可以在运行时执行必要的验证。例如,您可以检查委托的调用列表,以确保父节点在该列表中。

您可以为您的用户控件创建一个特定的构造函数,以防止实例化,除非给出事件处理程序,像这样。

public partial class MyUserControl : UserControl {
    public MyUserControl (ToolStripItemClickedEventHandler handler) {
        InitializeComponent ();
        myContextMenuStrip.ItemClicked += handler;
    }
}

请注意:这在Visual Studio的表单设计器中不能很好地工作,因为表单设计器通常需要无参数的构造函数。相反,您需要从代码手动创建控件实例。