在C#wpf中关闭窗口后发生了什么

本文关键字:发生了 什么 窗口 C#wpf | 更新日期: 2023-09-27 18:26:33

我正在使用它传递Window1的对象作为对Window2的引用。然后我关闭Window1,并尝试使用Window2中的按钮单击来显示Window1。
我得到了一个错误,这是经常可能与任何开发人员在wpf。错误为:在窗口关闭后无法设置可见性或调用Show,ShowDialog

Window1.xaml.cs中的按钮单击方法
{
Window2 w2 = new Window2();
w2.w1Obj = this;
w2.show();
}

然后我关闭Window1。

Window2.xaml.cs中的按钮单击方法
{
w1Obj.testMethod();
this.w1Obj.show();
}

这里testMethod()执行得很好,但当我想显示那个窗口时,它会崩溃。所以我想知道当我关闭窗口时,内存中发生了什么,或者Window1对象发生了什么。?这是内存泄漏吗。?

在C#wpf中关闭窗口后发生了什么

您应该尝试使用Window.Hide()而不是Window.Close().

调用Window.Close()时:

关闭窗口会引发关闭事件。如果交割事件未被取消,则会发生以下情况:

该窗口将从Application.Windows中删除(如果存在Application对象)。

如果所有者/所有者关系是在显示所有者窗口之前和打开所有者窗口之后建立的,则该窗口将从所有者窗口中删除。

引发Closed事件。

窗口创建的未管理资源将被释放。

如果调用ShowDialog来显示窗口,则ShowDialog将返回。

关闭一个窗口会导致它所拥有的所有窗口都被关闭。此外,根据application.ShutdownMode属性的设置方式,关闭窗口可能会导致应用程序停止运行。

您可以在这里找到更多关于关闭事件的信息关闭事件