2012-11-14 78 views
0

試圖瞭解如何最好地處理關閉事件。vb.net中的表單關閉事件中的事件序列

如果我有多個打開的工作空間有孩子,當關閉時,可能會返回數據給父母,這可能意味着父母需要處理的東西,我試圖找出停止關閉和返回控制的最佳方法父工作區。 (我可以打開不同的工作區,並且窗口基本上都是父級工作區的模態。)

例如:我有一個帳戶工作區,它調用地址編輯窗口。我在地址編輯中間關閉了應用程序(從託管帳戶工作區的窗口)。我有關閉事件的步驟通過工作區,如果它發現一個模式窗口打開,它執行該窗口工作區上的canclose。

假設canclose提示保存並關閉,不保存或取消關閉。如果保存,模式工作區會將地址發送回處理該地址的帳戶工作區。這通常會導致不能繼續關閉,因爲這些新數據需要與帳戶工作區相關進行檢查並可能保存在那裏。我希望帳戶工作區能夠關注並且我想要發起的canclose獲得虛假回報。

作爲一個事件,我應該把工作空間作爲焦點嗎,並且只需要返回false來調用canclose?

當我運行諸如canclose之類的過程時,我對序列明智地發生了什麼感到困惑,並且事件代碼將在事件代碼實際上與請求事件的代碼相關時執行時觸發事件。

回答

0

請不要使用自己的機制(也可能重新發明輪子),請首先考慮本機FormClosing事件。在那裏,您可以Cancel關閉或將CloseReason覆蓋爲自定義的非級聯值,以獲取更詳細的操作樹。

+0

我們處理捕獲一個標籤或窗口的關閉,檢查我們的標誌在ws上以查看它是否髒,如果是,那麼我們在ws的datacontext視圖模型中調用該過程,以便它可以提示用戶那個行動。該虛擬機可能會將數據保存到數據庫,或者它可能只是將數據返回給它的父級,這就是爲什麼它需要確定它是否可以關閉以及如何正確關閉它。如果它發送數據備份平行數據,則這涉及調用父級ws虛擬機上的進程來處理返回的數據。我想停止取消,並執行此返回過程並將焦點返回給父項ws – BRisley

+0

@BRisley:您應該可以用上述方法完成所有這些。我目前正在使用它來管理保險管理系統核心的生產應用程序。級聯未保存的更改將導致不同的提示,並且用戶可以在任何步驟取消。 – Neolisk

+0

您是如何處理提示的,您是否允許提示執行級聯事件,或者您只是取消關閉事件並將其留在該工作區視圖中? – BRisley