2012-05-09 5 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, 그래서 때문에 당신은 당신의 시작 화면에게 programm에 종료를 닫을 때. 당신은 여전히 ​​작동 할 수 있습니다 OnExplicitShutdown로 설정 작동하지 않는 경우

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

을 base.OnStartup에 대한 호출 뒤에 다음 코드를 추가하여 변경할 수 있습니다.

+0

예. 간단한 해결 방법은 splash.Close() 전에 main.Show()를 호출하는 것입니다. –

+0

@Hans Passant : 예, 가능합니다. – shriek

0

Show 메서드는 닫힐 때까지 기다리지 않고 Window을 엽니 다.

앱이 닫힐 때까지 실행을 중지하려면 ShowDialog 메서드를 사용해야합니다.

0

다른 해결책은 기본 창을 먼저로드하고 visibility 속성을 hidden으로 설정하는 것입니다. 그런 다음 스플래시 화면을 시작하고 닫으면 표시가 다시 표시되도록 변경합니다.

관련 문제