2009-12-08 8 views
7

wpfウィンドウが "x"ボタンで閉じられているかどうかを知る方法はありますか?"x"ボタンでウィンドウが閉じられたかどうかを知る方法?

+0

明確にすることはできますか? 「X」ボタンとウィンドウ(キーボード)を閉じるその他の手段を区別する必要はありますか?窓を閉める方法は? –

+0

"X"ボタンと他のウィンドウ(キーボード)を閉じる手段を区別する – Vytas999

+1

なぜこのようにしたいのか説明すると役立つと思います。ユーザーには、Xまたはメニュー項目によって閉じられているかどうかは関係ありません。たぶん、あなたが本当にやりたいことを達成するのを助けることができます –

答えて

11

私の意見では、ユーザーが別の方法でフォームを閉じたかどうかを示すブール値を格納するのが最も簡単な方法です。

次に、OnClosingイベントで、booleanがfalse(xボタンがクリックされたことを示す)かどうかを確認します。

唯一の問題は、あなた自身がブール値を設定していることです。これはユーザーがフォームを閉じることができる別の方法に依存します。

編集:これは、フォームを閉じることができる他の方法に大きく依存していることを指摘しておきます。 Window.Close()を呼び出してこのウィンドウを閉じるメソッドがいくつかある場合、私はあなたのためにブール値の設定を行うUserClose()というメソッドを1つ作成することを検討します。

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

これにより、外部コードがブール値を設定してウィンドウを閉じることができます。

3

差は以下の通りです:

はwindow.close()は、WM_CLOSEがウィンドウに送信されます。

Alt + F4とXボタンは、SC_CLOSEタイプのWM_SYSCOMMANDメッセージを表示します。このメッセージをさらにルーティングするかどうかを決定できます(最後にWM_CLOSEが発生します)。

Look for my answer with code example here

関連する問題