我在登錄成功后跳轉到主頁面的時候,總是會閃退,調試發現調用這個ShowDialog之后,就會觸發主頁面的FormClosing
C# 窗體關閉時可以觸發的事件
FormClosing :在窗體關閉時,FormClosing 事件發生。窗體關閉時,此事件會得到處理,從而釋放與此窗體關聯的所有資源。如果取消此事件,則該窗體保持打開狀態。若要取消窗體的關閉操作,請將傳遞給事件處理程序的 FormClosingEventArgs 的 Cancel 屬性設置為 true。
FormClosed:在用戶或 Application 類的 Close 方法或 Exit 方法關閉窗體后,會發生 FormClosed 事件。若要防止窗體關閉,請處理 FormClosing 事件,並將傳遞給事件處理程序的 CancelEventArgs 的 Cancel 屬性設置為 true。可以使用此事件執行一些任務,如釋放窗體使用的資源,還可使用此事件保存輸入窗體中的信息或更新其父窗體。
當窗體顯示為模式對話框時,單擊“關閉”按鈕(窗體右上角帶 X 的按鈕)會隱藏窗體並將 DialogResult 屬性設置為 DialogResult.Cancel。通過在窗體的 FormClosing 事件的事件處理程序中設置 DialogResult 屬性,可以在用戶單擊“關閉”按鈕時重寫分配給 DialogResult 屬性的值。
注意
在顯示為無模式窗口的 Form 上調用 Close 方法時,不能調用 Show 方法使窗體可見,因為窗體的資源已被釋放。若要隱藏窗體然后又使其可見,請使用 Hide 方法。
如果窗體是多文檔界面 (MDI) 父窗體,則在引發 MDI 父窗體的 FormClosing 事件之前將引發所有 MDI 子窗體的 FormClosing 事件。同樣,在引發 MDI 父窗體的 FormClosed 事件之前,將引發所有 MDI 子窗體的 FormClosed 事件。取消 MDI 子窗體的 FormClosing 事件不能防止引發 MDI 父窗體的 FormClosing 事件。但是,取消該事件會將作為參數傳遞給父窗體的 FormClosingEventArgs 類的 Cancel 屬性設置成 false。要強制關閉所有 MDI 父窗體和子窗體,請將 MDI 父窗體中的 Cancel 屬性設置成 false。