Csharp/C#教程:新窗口后程序不会停止分享


新窗口后程序不会停止

也许是C#,WPF,.NET 4.0的一个愚蠢的问题:

如果我在窗口派生类上执行新操作并且不在此窗口上调用ShowDialog,则我的程序在关闭时不再关闭。

例:

Window d = new Window(); //d.ShowDialog(); 

为什么会这样?

我不想显示窗口,我只想将此对象用于某些目的。 那么为了让我的程序在之后关闭,我该怎么办呢?

您很可能已将应用程序配置为在其所有窗口都已关闭时关闭,并且通过创建永不关闭的新窗口,您的应用程序永远不会关闭。

此设置由Application.ShutdownMode属性控制 ,该属性指定导致调用Shutdown方法的条件。 基本上,您有三种选择。

  1. 第一个,正如您遇到的那样,除非并且直到它创建的所有窗口都已关闭,否则不会关闭您的应用程序。 它们是由用户关闭还是通过调用Close方法以编程方式关闭无关紧要。

    通过将Application.ShutdownMode属性设置为OnLastWindowClose来指定此选项。

  2. 第二种方法利用了这样一个事实,即几乎所有应用程序都有一个“主”窗口(这是您启动应用程序时显示的第一个窗口),并且运行时会自动关闭整个应用程序(以及所有子窗口)主窗口关闭。 同样,窗口是由用户关闭还是通过代码关闭窗口无关紧要。

    通过将Application.ShutdownMode属性设置为OnMainWindowClose来指定此选项。

  3. 第三个选项实质上表明您将手动管理事物。 在您通过代码自己调用Shutdown方法之前,它不会关闭应用程序。

    通过将Application.ShutdownMode属性设置为OnExplicitShutdown来指定此选项。

在这种情况下,我的建议是设置第二个选项,并在用户关闭主窗口时自动关闭应用程序。 这将防止任何可能仍然显示的流浪儿童窗口阻止您的应用程序关闭。 这消除了编写Stecya答案中显示的代码的需要,并让运行时自动为您处理所有这些。

您可以使用此代码关闭所有窗口

上述就是C#学习教程:新窗口后程序不会停止分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  private void CloseAllWindows() { foreach(var window in Application.Current.Windows) window.Close(); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1034028.html

(0)
上一篇 2022年1月18日
下一篇 2022年1月18日

精彩推荐