10

ウィンドウが閉じられたかどうかを検出する賢い方法はありますか

  • ユーザーがウィンドウの右上隅にある (X) ボタンを押すか、
  • window.Close() がプログラムで呼び出されました。

window.Closing ハンドラーでこれを検出したいと思います。window.Close() を呼び出すたびにフラグを設定できますが、これはあまり適切な解決策ではありません。

4

2 に答える 2

14

私はこれが好きかどうかはまったくわかりませんが、明らかにあなたが尋ねる理由がある質問です. OnClosing イベントでスタック トレースを取得する場合は、Window.Close イベントを検索できます。

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
   bool wasCodeClosed = new StackTrace().GetFrames().FirstOrDefault(x => x.GetMethod() == typeof(Window).GetMethod("Close")) != null;
   if (wasCodeClosed)
   {
       // Closed with this.Close()
   }
   else
   {
       // Closed some other way.
   }

   base.OnClosing(e);
}
于 2012-11-13T14:16:37.423 に答える