2010-10-19 58 views
0

我有一個登錄對話框顯示在一個WPF應用程序上,它有一個取消按鈕,而不是試圖登錄到應用程序,關閉它。問題是,我有一個用戶控件出現在mainwindow窗體上,所以如果我嘗試運行Application.Current.Shutdown()或this.Close()方法,我會從事件處理程序中的一個異常中分配一個事件到用戶控件上的特定控件。異常是NullReferenceException,即對象引用未設置爲對象的實例。我有限的WPF理解,似乎,當我試圖關閉應用程序時,有另一個線程(UI線程?)嘗試在MainWindow上初始化組件。我不確定這是否正確,但我希望這裏的某個人能夠清楚說明爲什麼要這樣做以及採取任何方式來阻止它,以便我可以正常關閉應用程序。關閉WPF MainWindow

更多信息,此登錄對話框和後續的Application.Current.Shutdown()方法全部發生在MainWindow構造函數內,不知道是否有幫助。

感謝您的幫助。

+1

你能後的代碼,並告訴它引發異常的行。 – Vitalij 2010-10-19 14:08:04

回答

0

我懷疑在處理主窗口之前不要刪除事件處理程序,這可能會導致此異常。

+0

public event RoutedEventHandler NewModelClick { add {TopMenu.NewModelClick + = value; } 刪除{TopMenu.NewModelClick - = value; } } – 2010-10-19 14:13:15

+0

它添加{TopMenu.NewModelClick + = value; }行,TopMenu爲NULL – 2010-10-19 14:14:11

+0

@Walter:請使用此信息編輯您的原始問題。像這樣的東西往往會在評論部分迷失,特別是在原始問題方面。爲此,請在您的帖子下方選擇「修改」,然後將信息粘貼到那裏。確保在粘貼代碼時突出顯示代碼,然後選擇「代碼」按鈕(帶1和0的代碼),以便代碼顯示爲格式化代碼。 – 2010-10-19 15:02:53

0

好沒關係,我得到了答案,我把InitialiseComponent()方法周圍的if語句和布爾設置爲false,如果用戶點擊退出,快樂的日子:)

+0

如果在組件初始化期間顯示對話框,則可以在對話框關閉後調用return函數,以防止應用程序初始化窗口的其餘部分。 – Vitalij 2010-10-20 07:31:53