本文最后更新于 2086 天前,其中的信息可能已经有所发展或是发生改变。
关于closing事件的解释文章:自定义wpf关闭按钮触发的动作
基本的处理
如果你的窗口打开代码是这样的:
上面是按键后被触发的事件。
当打开的窗口被关闭后,你会发现,如果再次尝试打开,窗口会报错。
所以我们需要在子窗口的closing事件更改一下:
更改一下窗口loaded后执行的代码:
处理事件内容改成这样:
这样,关闭事件只是一个隐藏窗口的事件,再次打开就不会报错了。
会额外引发的问题
由于需要在主窗口被关闭后,自动关闭其他窗口,所以主窗口的closing也被像下面这样重写了:
本身在我们更改子窗口closing事件之前,这段代码是正常的,但是当我们想上面的代码那样处理后,由于关闭事件只是一个hide
,所以会导致软件看起来像是被关闭了,实际还在运行的情况。
如何解决呢?我们可以新建一个class,放一个publish static的变量,来标记一下软件是不是被真正关闭了,最后主窗口的closig代码可以加一句更改这个状态的代码:
子窗口的closing事件也需要相应的更改:
至此,问题全部解决。