簡體   English   中英

如何使用CancelEventArgs之類的事件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM