gpt4 book ai didi

C# WPF 如何正确关闭新窗口?

转载 作者:太空狗 更新时间:2023-10-30 00:30:05 24 4
gpt4 key购买 nike

我有一个简单的问题:

1-新建一个WPF项目,里面有启动窗口:MainWindow.xaml

2- 在这个项目中,创建一个新窗口Window1.xaml

3- Windows1的加载事件,让它关闭。

4- 将 Open 按钮放到 MainWindow 中。实现它的点击事件。

private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Close();
}

private void button_Click(object sender, RoutedEventArgs e)
{
Window1 w = new Window1();
w.Show();
}

当我启动这个应用程序时,VS2015 的 UI 变成了 DEBUGING MODE,然后我点击窗口右上角的关闭按钮,VS2015 的 UI 回到正常模式。

现在,如果我启动应用程序,点击Open按钮,然后Window1会快速显示并关闭,但是,如果我点击右上角的关闭按钮MainWindow,不同之处:VS2015 不会返回正常模式,而是停留在DEBUGING MODE。所以对我来说,这意味着有东西卡在那里,我不知道它是什么。

有没有人知道如何解决这个问题?

最佳答案

这不是答案,只是我的一个非常有趣的观察结果。我做了几次你的测试(打开和关闭窗口),然后转储了 WPF 窗口列表:

foreach (Window w in Application.Current.Windows)
Debug.WriteLine(w.GetType().FullName)

导致:

WpfTest.MainWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow

WpfTap 是 Visual Studio 的 WPF 调试器,可帮助调试 WPF 内容树。

现在,如果我没有使用 Loaded 事件,而是使用 ContentRendered 事件来关闭窗口,则不会发生这种情况,并且一切正常。如果我在不调试的情况下运行 .exe 也很好。

所以看起来 Visual Studio *在*一个 Window 的 Loaded 事件之后附加了 WPF 调试器,如果您过早关闭窗口,它会使调试器组件在内存中徘徊。

关于C# WPF 如何正确关闭新窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42080966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com