如何知道一个事件有多少个事件处理程序?
我想要一种方法来执行以下代码:
// if (control.CheckedChanged.Handlers.Length == 0)
{
control.CheckedChanged += (s, e) =>
{
// code;
}
}
注意:这段代码在控制类之外。
提前致谢。
最佳答案
你不能,因为只有公开事件的类型才能访问实际的委托(delegate)。在控件中,您可以执行类似的操作:
if (MyEvent!= null)
{
EventHandler[] handlers = (EventHandler[])MyEvent.GetInvocationList();
foreach(EventHandler handler in handlers)
{
...
}
}
或者,对于你正在尝试做的事情:
if (CheckedChanged == null)
{
CheckedChanged += (s, e) =>
{
// code;
}
}
关于c# - 如何知道一个事件有多少个事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541453/