2012-05-09 7 views
2

私はApp.xaml.c内で次のように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(); 
} 

答えて

5

ShutdownModeのデフォルト値はOnLastWindowCloseですので、あなたがプログラムの開発を終了、あなたのスプラッシュ画面を閉じるとき。それはまだOnExplicitShutdown働くかもしれないに設定する動作しない場合 あなたはbase.OnStartup

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

への呼び出しの後に次のコードを追加することで、これを変更することができます。

+0

はい。簡単な回避策は、splash.Close()の前にmain.Show()を呼び出すことです。 –

+0

@Hans Passant:はい、それもうまくいく可能性があります。 – shriek

0

Showメソッドは、それが閉じるのを待たずにWindowを開きます。

アプリが閉じるまでアプリの実行を停止するには、ShowDialogメソッドを使用する必要があります。

0

もう1つの解決策は、メインウィンドウを最初に読み込み、visibilityプロパティをhiddenに設定することです。そこからあなたのスプラッシュスクリーンを起動し、閉じてしまえば可視性を可視に戻します。

関連する問題