C# 如何声明事件为强制事件
我有一个用户控件,它有一个contextmenustrip,每次右键单击都会显示。当用户在此菜单上选择一个项目时,我必须将此信息传递给父控件,以便它能够根据此信息做出反应 因此,我需要家长强制订阅此活动。有没有办法说出来 若并没有办法做到这一点,我应该抛出一个异常还是只检查事件处理程序的null值而不做任何事情C# 如何声明事件为强制事件,c#,.net,events,C#,.net,Events,我有一个用户控件,它有一个contextmenustrip,每次右键单击都会显示。当用户在此菜单上选择一个项目时,我必须将此信息传递给父控件,以便它能够根据此信息做出反应 因此,我需要家长强制订阅此活动。有没有办法说出来 若并没有办法做到这一点,我应该抛出一个异常还是只检查事件处理程序的null值而不做任何事情 谢谢。在编译时无法强制执行此操作-这意味着.NET framework/C语言中没有任何东西可以在编译时执行静态检查,以确保在代码中实现此逻辑 在运行时,您可以执行必要的验证。例如,您可
谢谢。在编译时无法强制执行此操作-这意味着.NET framework/C语言中没有任何东西可以在编译时执行静态检查,以确保在代码中实现此逻辑
在运行时,您可以执行必要的验证。例如,您可以检查委托的调用列表,以确保父级在该列表中。您可以为用户控件创建特定的构造函数,以防止实例化,除非提供了事件处理程序,如下图所示
public partial class MyUserControl : UserControl {
public MyUserControl (ToolStripItemClickedEventHandler handler) {
InitializeComponent ();
myContextMenuStrip.ItemClicked += handler;
}
}
但请注意:这在VisualStudio的表单设计器中不会很好地工作,因为表单设计器通常需要无参数的构造函数。相反,您需要从代码手动创建控件实例。是一个很好的解决方法。这将意味着更多的家务活。