Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么关闭启动屏幕会导致我的主窗口无法显示?_C#_Wpf_Startup_Splash Screen - Fatal编程技术网

C# 为什么关闭启动屏幕会导致我的主窗口无法显示?

C# 为什么关闭启动屏幕会导致我的主窗口无法显示?,c#,wpf,startup,splash-screen,C#,Wpf,Startup,Splash Screen,我正在我的App.xaml.cs中覆盖OnStartup方法,如下所示。但是,一旦我添加了启动屏幕关闭,我的主窗口将永远不会显示。调试器到达main.Show()行,但在执行完毕后,应用程序关闭。有什么想法吗 protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); SplashWindow splash = new SplashWindow(); splash.Show();

我正在我的App.xaml.cs中覆盖OnStartup方法,如下所示。但是,一旦我添加了启动屏幕关闭,我的主窗口将永远不会显示。调试器到达main.Show()行,但在执行完毕后,应用程序关闭。有什么想法吗


protected override void OnStartup(StartupEventArgs e)
{
   base.OnStartup(e);

   SplashWindow splash = new SplashWindow();
   splash.Show();

   System.Threading.Thread.Sleep(5000);
   splash.Close();

   MainWindow main = new MainWindow();
   main.Show();
}

由于的默认值为
OnLastWindowClose
,因此当您关闭启动屏幕时,程序退出。 您可以通过在调用base.OnStartup后添加以下代码来更改此设置

this.ShutdownMode = ShutdownMode.OnMainWindowClose;
如果仍然不起作用,将其设置为
OnExplicitShutdown
可能会起作用。

该方法会打开一个
窗口
,而无需等待它关闭


您应该使用应用程序的方法停止执行,直到应用程序关闭。

另一种解决方案是首先加载主窗口,但将其可见性属性设置为隐藏。然后从那里启动启动屏幕,一旦关闭,将可见性更改回可见

对。一个简单的解决方法是在splash.Close()之前调用main.Show()