2010-03-15 2 views
0

구현 : "나는 WPF 오류 나는 다음과 같은 예외가 무엇입니까 Login.xaml

StartupURI="MainWindow.xaml

를 사용 할 때

모든 작업했다"Null 허용 객체에 값이 있어야 "

하지만 로그인 화면을 구현하여

로 변경했습니다.

Startup="Application_Startup" 
한 다음 App.xaml.cs를에서 다음과 같은 방법을 만들어 :

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     UpdateAccounts(); 
     bool result = true; 
     ///* 
     LoginWindow login = new LoginWindow();    
     result = login.ShowDialog().Value; 
     /* */ 

     if (!result) 
     { 
      return; 
     } 

     MainWindow window = new MainWindow(); 
     bool main = window.ShowDialog().Value; 
    } 

사람이 무슨 일이 일어나고 있는지 어떤 생각을 가지고 있습니까? 또는 로그인 인터페이스를 구현하기위한 최적의 방법에 대한 제안.

예외가

BOOL에서 발생되는

window.ShowDialog =() 주요 가치.;

예외 스택 추적은 :

at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 
    at System.Nullable`1.get_Value() 

내 MainWindow.xaml은 응용 프로그램이 시작될 때로드되고 있던 내 기본 창, 그리고 그것은 prefectly 괜찮 았는데. 그 안에 많은 코드가 있습니다. 몇 개의 목록 상자, 몇 개의 콤보 상자, 월 달력. 또한 액세스 데이터베이스에 연결됩니다.

내게는 DialogResult를 설정하지 않고 바로 내 Window가 ShowDialog()에서 반환되는 것처럼 보입니다.

업데이트 : 난 내 코드를 변경하면 내가 예외를 얻을하지 않습니다.

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     UpdateAccounts(); 
     bool result = true; 
     ///* 
     LoginWindow login = new LoginWindow();    
     result = login.ShowDialog().Value; 
     /* */ 

     if (!result) 
     { 
      return; 
     } 

     MainWindow window = new MainWindow(); 
     window.ShowDialog(); 
    } 

그러나 나는 또한 내 주요 창이 표시하지 않고, 앱에서 바로 로그인 후 종료

+1

를 모든 것이 잘 작동하지만 물론 우리는이 없습니다 "UpdateAcccounts()"또는 LoginWindow 코드 또는 MainWindow에 한 코드. 이 일들에 대해 더 많은 정보를 줄 수 있습니까? 또한 예외가 throw되는 위치에 대한 자세한 정보를 제공하면 도움이 될 것입니다. –

+0

결과를 할당하는 대신 window.ShowDialog()를 사용하면 예외가 발생하지 않습니다. 변수에. 그러나 그것은 단지 내 양식을 표시하고 대기하지 않고 내 응용 프로그램을 닫습니다. 제대로 작동하려면 MainWindow에서 재정의해야 할 것이 있습니까? Window에서 상속되므로 제대로 작동해야합니까? –

답변

0

임시 수정을 찾았습니다. 임시 수정은 최상의 옵션은 아니지만 작동합니다.

App.xaml는 :

<Application x:Class="Power_Scheduler.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Startup="Application_Startup" 
    ShutdownMode="OnExplicitShutdown"> 
</Application> 

는 차라리 ShowDialog를보다() 표시() 메소드를 사용하여 내 코드에서은 ShutdownMode = "OnExplicitShutdown"

을 추가했다.

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     UpdateAccounts(); 
     bool result = true; 
     ///* 
     LoginWindow login = new LoginWindow();    
     result = login.ShowDialog().Value; 
     /* */ 

     if (!result) 
     { 
      return; 
     } 

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

이는 응용 프로그램을 실행 상태로 유지하고 기본 창을 표시합니다.그리고 MainWindow를에, 나는 닫힌 이벤트에 가입하고 다음 코드를 추가 : 나는 밖으로이 스텁 당신의 도움 모두에 대한

private void Window_Closed(object sender, EventArgs e) 
    { 
     Application.Current.Shutdown(0); 
    }  

감사합니다,

1

받은 메시지에서 login.ShowDialog()가 null을 반환하고있는 것 같습니다.

+0

팁 주셔서 감사하지만 나의 창은 심지어 보이지 않고있다. 내 MainWindow.xaml이 이전에 내 기본 창이었습니다. 제대로 표시하려면 설정해야 할 항목이 있습니까? 그리고 그것이 끝날 때까지 보여 주시겠습니까? –

+0

필자는 tryed를 사용하지 않았지만 Application_Startup은 LoginWindow를 사용하여 실행을 차단하고 아무 것도 표시되지 않기 때문에 올바른 작업이 아니라고 생각합니다. 해당 코드를 다른 장소로 이동하십시오 (시작 이벤트 이후). – ema