0
我有一個表單(讓我們稱之爲父窗體),從中可以加載另一個「永遠在頂部但不是模態」窗體(就像一個對話框,但不是一個對話框 - 用戶可以離開新的「子窗體」並繼續在父窗體上工作)。如何確定表單是否已被用戶或代碼關閉?
第一次用戶打開該子窗體時會加載並顯示一些數據。如果他們關閉了表單,我實際上攔截了關閉並且簡單地隱藏了表單 - 所以下次他們打開表單時,我們不必重新加載數據(這不是數據變化非常大)。
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
this.Hide();
}
後來,當父窗體關閉,我想迫使子窗體正確關閉 - 在它的基本形式運行的一些代碼來存儲它的位置和大小的下一次。
當前我打電話childForm.Dispose()從很好地清理事情的父窗體,但不給我太多的控制。
但是,如果我調用childForm.Close()方法,e.CloseReason仍然是「CloseReason.UserClosing」。
是否有辦法區分用戶關閉窗體和我的代碼(在父窗體中)關閉它?
我希望能夠讓窗體的基本關閉事件運行。 我添加了一個ReallyClose事件,並調用base.Close()希望基類中的表單可以運行,但是當然,我的重寫關閉事件剛剛運行,表單又被隱藏了。這裏有難聞的氣味 - 可能需要改變我對這一切的想法。 – 2009-07-24 06:28:01