【问题标题】:How to know whether window was closed by "x" button?如何知道窗口是否被“x”按钮关闭?
【发布时间】:2009-12-08 12:03:44
【问题描述】:

有谁知道如何判断 wpf 窗口是否被“x”按钮关闭?

【问题讨论】:

  • 你能澄清一下吗?您想区分按下“X”按钮和其他关闭窗口的方式(即键盘)吗?或者任何关闭窗口的方法?
  • 区分按下“X”按钮和其他关闭窗口的方式(即键盘)
  • 我认为如果您解释为什么要这样做会很有帮助。对于用户来说,它是由 X 还是菜单项关闭都无关紧要。也许那时我们可以帮助您实现您真正想做的事情

标签: wpf window


【解决方案1】:

最简单的方法(在我看来)是存储一个布尔值,指示用户是否通过其他方法关闭了表单。

然后在 OnClosing 事件中,检查布尔值是否为 false(表示单击了 x 按钮)。

唯一的问题是您自己设置了布尔值。这是否可能取决于用户关闭表单的其他方式。

编辑:我应该指出,这高度依赖于可以关闭表单的其他方式。如果您有许多通过调用 Window.Close() 来关闭此窗口的方法,我会考虑创建一个名为 UserClose() 的方法,它会为您进行布尔设置。

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

这将允许外部代码使用布尔值的设置关闭窗口。

【讨论】:

    【解决方案2】:

    区别如下:

    Window.Close() 导致 WM_CLOSE 被发送到窗口。

    Alt+F4 和 X 按钮会导致带有 SC_CLOSE 类型的 WM_SYSCOMMAND 消息。您可以决定是否希望进一步路由此消息(并最终导致 WM_CLOSE)。

    Look for my answer with code example here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      相关资源
      最近更新 更多