有谁知道如何找出wpf窗口是否被“x”按钮关闭?
答案 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)。