【问题标题】:How to override default window close operation?如何覆盖默认的窗口关闭操作?
【发布时间】:2011-03-01 09:36:25
【问题描述】:

在 WPF 中,我想更改某些窗口的默认关闭行为,以便当用户单击红色关闭按钮时,窗口不会关闭,它只是隐藏(并调用某些方法)。我该怎么做?

【问题讨论】:

  • 现在我应该接受谁的回答??两者都一样好......

标签: c# wpf window


【解决方案1】:
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
}

【讨论】:

    【解决方案2】:

    尝试在 Window.xaml.cs 中覆盖 OnClosing

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

    【讨论】:

    • 在我的 C# 4.0 设置中,这应该是 protected override void OnClosing(CancelEventArgs e)
    【解决方案3】:

    This page 应该会有所帮助。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多