![](/img/trans.png)
[英]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.