2010-07-22 10 views
3

이 작은 코드가 있습니다. Application_Startup에 창 표시. Wpf

private void Application_Startup(object sender, StartupEventArgs e) 
     { 
      WndAbout ab = new WndAbout(); 
      ab.Show(); 
     } 

그리고 다른 모듈이로드되기 전에, 응용 프로그램 시작시 창이나 대화 상자를 표시합니다.

하지만! 표시된 창을 닫으면 나중에 시작되는 주 창도 닫힙니다.

내가 뭘 잘못하고 있니? Showdialog()를 만들려고했는데 같은 상황이 발생했습니다.

답변

6

발생하는 문제는 그 방법에서 비롯되며 WPF는 종료를 관리합니다.

원하는 작업 ... ...

Application.Current.ShutdownMode 

을 통해 속성을 종료-행동을 변경할 수 있습니다. 적절한 값으로 변경하십시오.

Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnLastWindowClose; 

이 정보는 도움이됩니다.

또 다른 방법으로은 두 번째 창에 수동으로 MainWindow 속성을 설정하는 것입니다.

스플래시 스크린 만 만들려면 .net 3.51부터 사용할 수있는 스플래시 스크린 옵션을 사용하십시오. IT는 응용 프로그램로드 시퀀스의 초기 단계에로드 할 수 있다는 이점이 있습니다.

중 하나에서되는 SplashScreen


으로 업데이트

빌드 작업을, 그렇게하여 프로젝트 탐색기에서 이미지의 속성 탭을 열고 설정하려면 내 애플 리케이션 메인 윈도우를 보여주기 전에 모달 다이얼로그를 보여 주어야하는 디자인이있었습니다. 현재로서는 ShutdownMode -property에 대해 알지 못했습니다.

내가 한 것은 사용자가 보이지 않는 Window을 처음 시작한 것입니다. 이것은 첫 번째 창이었고 app-livetime (WPF의 기본 동작)도 제어했습니다. 이 창에서 원하는 대화 상자 (모달로 표시된 창)를 열었습니다. 이 대화 상자가 성공적으로 완료되지 않은 경우 숨겨진 창을 종료하고 앱이 완전히 닫힙니다. 대화 상자가 성공적으로 완료되면 사용자가 작업 할 수있는 첫 번째 MainWindow 인스턴스를 만들었습니다.

+0

아니요, 둘 다 도움이되지 않았습니다. 그러나 나는이 상황을 배제한 것으로 보인다. 나는 창에 대해서 숨어 있고 어떤 이유로 도움이된다. –

+0

StartUPURI를 제거하고 수동으로 양식을 열어야한다고 생각합니다. 그러나 당신이 묘사하고있는 것은 가능한 방법이기도합니다 (나는 비슷한 문제에 대해서도 그것을 사용했습니다). 그러나 응용 프로그램 시작에 대한 정보 만 표시하려는 경우 suggesion으로 시작 화면 옵션을 사용하는 것이 좋습니다.팻 어셈블리를로드하기 전에 애플리케이션의 시작 부분에 표시되므로 사용법이 앱의 사용자 경험을 훨씬 향상시킵니다. – HCL

+0

아니요, 정보 대화 상자는 오해의 소지가있는 한 예입니다. LogonDialog가됩니다. –

2
private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    ShutdownMode mode = this.ShutdownMode; 
    this.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown; 
    YourLogonWnd logon = new YourLogonWnd(); 
    logon.ShowDialog(); 
    if (!logon.DialogResult.HasValue || !logon.DialogResult.Value) 
    this.Shutdown(); 
    else 
    this.ShutdownMode = mode; 
} 

는 사실, 이벤트 핸들러의 끝 부분에 사용하는 것이 좋습니다 "OnMainWindowClose".

+0

이것은 나를 위해 일했습니다. 감사. – Michael