[英]How can I examine the CancelEventArgs from Application.Exit()?
[英]How events like CancelEventArgs can be used?
如何使用事件System.ComponentModel.CancelEventArgs
? 假设我们有以下代码:
public event CancelEventHandler EventTest = delegate { };
public void MakeSomethingThatRaisesEvent()
{
CancelEventArgs cea = new CancelEventArgs();
EventTest(this, cea);
if (cea.Cancel)
{
// Do something
}
else
{
// Do something else
}
}
如果在活动中注册了多个代表,会发生什么? 有什么办法可以获得所有订阅者的结果吗?
这有时用于Winforms(至少)。 如果不能获得所有值,他们只假设该事件的一个订户?
要单独询问每个订户,您需要访问该列表:
foreach (CancelEventHandler subHandler in handler.GetInvocationList())
{
// treat individually
}
然后你可以依次检查每一个; 否则你只是得到最后的投票。
通常,在大多数情况下,该类只允许多个订阅者,但每个订阅者都获得相同的CancelEventArgs实例。
如果任何订户将Cancel设置为true,则该操作将被视为已取消。
您可以通过获取调用列表并向每个订阅者发送事件来解决此问题,但通常不需要这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.