2009-12-08 104 views
7

有誰知道如何找出wpf窗口是否被「x」按鈕關閉?如何知道窗口是否被「x」按鈕關閉?

+0

你能澄清嗎?您是否想區分按下「X」按鈕和其他關閉窗口的方式(即鍵盤)?或者關閉窗戶的任何方法? – 2009-12-08 12:06:44

+0

區分按下「X」按鈕和關閉窗口的其他方式(即鍵盤) – Vytas999 2009-12-08 13:26:05

+1

我認爲如果您解釋爲什麼要這樣做會有所幫助。對用戶來說,它是否由X或菜單項關閉應該沒有關係。也許那麼我們可以幫助你實現你真正想做的事情 – 2009-12-08 14:50:26

回答

11

最簡單的方法(在我看來)是存儲一個布爾值,指示用戶是否通過另一種方法關閉了表單。

然後在OnClosing事件中,檢查布爾值是否爲false(表示單擊了x按鈕)。

唯一的問題是你已經設置了自己的布爾值。這可能取決於用戶可以關閉表單的其他方式。

編輯:我應該指出,這是高度依賴於窗體可以被關閉的其他方式。如果你有很多方法通過調用Window.Close()來關閉這個窗口,我會考慮創建一個名爲UserClose()的方法,它爲你做布爾設置。

public void UserClose() 
{ 
    NonXClose = true; 
    this.Close(); 
} 

這將允許外部代碼關閉窗口,並設置布爾值。

3

所不同的是以下內容:

window.close()的導致WM_CLOSE被髮送到窗口。

Alt + F4和X按鈕導致WM_SYSCOMMAND消息與SC_CLOSE類型。您可以決定是否希望進一步路由此消息(並最終導致WM_CLOSE)。

Look for my answer with code example here

相關問題