如何覆盖默认窗口关闭操作?

Ras*_*sto 19 c# wpf window

在WPF中我想更改某个窗口的默认关闭行为,这样当用户点击红色关闭按钮时窗口不会关闭,它只是隐藏(并调用某些方法).我怎样才能做到这一点?

Job*_*Joy 38

尝试在Window.xaml.cs中重写OnClosing

private override void OnClosing( object sender, CancelEventArgs e )
{
     e.Cancel = true;
     //Do whatever you want here..
}
Run Code Online (Sandbox Code Playgroud)

  • 在我的C#4.0设置中,这应该是`protected override void OnClosing(CancelEventArgs e)`. (15认同)

小智 14

这个页面应该有帮助.

可以处理关闭以检测窗口何时被关闭(例如,当调用Close时).此外,Closing可用于防止窗口关闭.要防止窗口关闭,可以将CancelEventArgs参数的Cancel属性设置为true.

如果要在应用程序的生命周期内多次显示和隐藏窗口,并且每次显示时都不想重新实例化窗口,则可以处理Closing事件,取消它并调用Hide方法.然后,您可以在同一实例上调用Show以重新打开它.