web-dev-qa-db-ja.com

デフォルトのウィンドウクローズ操作を上書きするにはどうすればよいですか?

WPFで、一部のウィンドウのデフォルトの閉じる動作を変更して、ユーザーが赤い閉じるボタンをクリックしてもウィンドウが閉じないようにしたいのですが、ウィンドウは単に非表示になります(また、何らかのメソッドを呼び出します)。どうやってやるの?

20
Rasto

Window.xaml.csでOnClosingをオーバーライドしてみてください

private override void OnClosing( object sender, CancelEventArgs e )
{
     e.Cancel = true;
     //Do whatever you want here..
}
37
Jobi Joy

このページ 役立つはずです。

閉じを処理して、ウィンドウが閉じられていることを検出できます(たとえば、Closeが呼び出されたとき)。さらに、Closingを使用して、ウィンドウが閉じるのを防ぐことができます。ウィンドウが閉じないようにするには、CancelEventArgs引数のCancelプロパティをtrueに設定します。

そして

アプリケーションの存続期間中にウィンドウを複数回表示および非表示にし、表示するたびにウィンドウを再インスタンス化したくない場合は、Closingイベントを処理してキャンセルし、Hideメソッドを呼び出すことができます。次に、同じインスタンスでShowを呼び出して、再度開くことができます。

14
user308323
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
  e.Cancel = true; // this will prevent to close
  `this.Hide();` // it'll hide the window
  // here now you can call any method
}
1