如何知道窗口是否被“x”按钮关闭?

时间:2009-12-08 12:03:44

标签: wpf window

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

2 个答案:

答案 0 :(得分:11)

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

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

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

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

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

这将允许外部代码关闭窗口,并设置布尔值。

答案 1 :(得分:3)

不同之处如下:

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

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

Look for my answer with code example here