2010-04-08 4 views
1

주 창을 만들기 전에 스플래시 화면이 표시된 응용 프로그램이 있습니다. 스플래시 화면이 표시되어있는 동안 사용자가 다른 응용 프로그램에 집중했다면 창을 만들 때 초점을 훔치는 기본 창을 피하고 싶습니다.최대화 된 윈도우에서 Window.ShowActivated = false를 어떻게 사용할 수 있습니까?

내 응용 프로그램의 시작은 다음과 같습니다

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    SplashScreenService.Start(); 

    // Initializing stuff... 
    ... 

    // Ready to open the main window. 
    MainWindow mainWindow = MainWindow(); 
    mainWindow.ShowActivated = SplashScreenService.HasFocus(); 
    mainWindow.ShowDialog(); 
} 

내가 Window.ShowActivatedfalse에 시작 화면이 초점을 잃은 경우에만 설정하고있어, 활성화하기에서 메인 창을 방지하기 위해. 그러나 이로 인해 예외가 발생합니다.

InvalidOperationException : ShowActivated가 false이고 WindowState가 Maximized로 설정된 경우 Window를 표시 할 수 없습니다.

사실, 내 MainWindow는 WindowStateMaximized (이전 세션 설정에서 복원 됨)으로 설정합니다. ShowActivated 기능과 함께 이러한 제한이있는 이유를 이해할 수 없습니다. 이 문제에 대한 문서를 찾을 수 없습니다.

ShowActivated이 거짓 일 때 WindowState에서 Normal까지 강제로 시도했지만 예외를 방지하지만 창을 활성화합니다! 어쩌면 창 상태를 변경하면 실제로 정품 인증을 받습니까?

이 문제를 해결하는 데 사용할 수있는 트릭이 있습니까? 내 메인 윈도우를 최대화 상태로 복원하고, 스플래시 화면에서 사용자가 앱에서 멀리 떨어져있는 경우 메인 윈도우가 다른 응용 프로그램과 멀리 떨어져 있도록하고 싶습니다.

답변

0

이 문제도 발생했습니다.

내가 시도한 첫 번째 작업은 스플래시 화면을 만들고 표시 한 후 기본 창을 다시 활성화하는 것이 었습니다. 정품 인증을 주 창으로 반환하고 작동했지만 매우 우아하지 않았습니다.

http://www.inveigledsoftware.com/2009/07/maximizing-a-wpf-window-with-windowstatenone/

+0

그것은 기본입니다 : 여기에 설명 된대로

더 나은 솔루션 대신 수동으로 극대화 할 수있는 시작 화면에 WindowState을 설정 Interop를 사용하여 전체 화면을 커버하기 시작 화면을 극대화하고 윈도우 폼하지 않는 것입니다 스플래시 화면이 아닌 최대화 된 창. – ChrisF

+0

미안하지만, 내 오해;)이 기술은 여전히 ​​당신을 위해 작동 할 수 있습니다, 그냥 메인 윈도우의 윈도우 상태를 설정하지 않고 수동으로 최대화하십시오. –

관련 문제