c# - 如何使用像 CancelEventArgs 这样的事件?

标签 c# event-handling

事件怎么可能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
}

然后你可以依次检查每一个;否则,您将获得最后一票。

关于c# - 如何使用像 CancelEventArgs 这样的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1539292/

相关文章:

c# - 如何实例化运行时确定的一定数量的对象?

c# - 如何在 C# 中使用低级键盘钩子(Hook)来抑制任务切换键(winkey、alt-tab、alt-esc、ctrl-esc)

asp.net - 为什么 IE 为具有鼠标悬停处理程序的服务器端元素添加 jQuery 属性?

event-handling - jQuery 事件处理程序 .on() 不起作用

iphone - 从 appdelegate 中的线程跨多个 View Controller 触发事件

javascript - Web 表单 Azure Active Directory : Failed to load resource: the server responded with a status of 401

c# - 使用成员函数启动线程

c# - 使用多维数组索引器的最有效方法

Javascript:多个事件,一个ajax请求

jquery - 一个元素上的多个 jQuery 事件具有不同的功能和目标选择器