子窗口的关闭和隐藏
关闭一个窗口之后,不能继续打开,出现如下错误:
System.InvalidOperationException: ‘Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed.’
原因:
关闭子窗口之后,子窗口对象被销毁了,如果不重新实例化一个新的子窗口对象,子窗口就不能重新打开了。
解决方法:
在子窗口添加如下函数,使子窗口隐藏,而不是直接关闭销毁。
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
this.Visibility = Visibility.Hidden;
}
主窗口关闭后,还是调试状态,没有完全退出
把子窗体加上隐藏的函数之后,关闭主窗口之后,程序没有退出调试阶段,表明子窗口的线程还没有结束,使得进程没有结束。在主窗口添加如下代码,手动结束进程。
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
System.Environment.Exit(0);
}