在学习WPF时自己弄了几个小工具,今天在使用时无意中发现点击右上角关闭按钮后,程序进程并没有被结束。网上也没有这个问题的答案(也许这对别人来说是小Case吧),后来发现这个问题也不太难,但还是写出来让新手有个参照。

    我最初的解决方法是在Windows窗体的Closed事件上作文章。给它一个方法,方法的代码也很简单:

private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}

    通过这个方法,窗体在关闭时就会调用Shutdown()方法结束程序。

    后来觉得这个方法不好、用起来不自在,于是想到了另一个方法:重写Windows类的OnClosed()方法:

protected override void OnClosed(EventArgs e)
{
Application.Current.Shutdown();
}

    现在看起来舒服了。

    还有一种方法:禁用右上角的红叉。这个方法是可行的,但由于WPF本身不可以直接禁用,实现起来很麻烦,而且给用户的体验也不太好(Windows用习惯了),所以在这里并不推荐。