Form.FormClosing 事件

定義

發生於表單關閉之前。

public:
 event System::Windows::Forms::FormClosingEventHandler ^ FormClosing;
public event System.Windows.Forms.FormClosingEventHandler FormClosing;
public event System.Windows.Forms.FormClosingEventHandler? FormClosing;
member this.FormClosing : System.Windows.Forms.FormClosingEventHandler 
Public Custom Event FormClosing As FormClosingEventHandler 

事件類型

範例

下列範例示範此成員的使用。 在此範例中,事件處理常式會報告事件發生次數 FormClosing 。 此報告可協助您瞭解事件發生的時間,並可協助您進行偵錯。 若要報告多個事件或經常發生的事件,請考慮將 取代 MessageBox.ShowConsole.WriteLine 為 或將訊息附加至多行 TextBox

若要執行範例程式碼,請將它貼到包含名為 Form1 之型 Form 別實例的專案。 然後,確定事件處理常式與事件相關聯 FormClosing

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {

System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder();
messageBoxCS.AppendFormat("{0} = {1}", "CloseReason", e.CloseReason );
messageBoxCS.AppendLine();
messageBoxCS.AppendFormat("{0} = {1}", "Cancel", e.Cancel );
messageBoxCS.AppendLine();
MessageBox.Show(messageBoxCS.ToString(), "FormClosing Event" );
}
Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _ 
     Handles Form1.FormClosing

    Dim messageBoxVB as New System.Text.StringBuilder()
    messageBoxVB.AppendFormat("{0} = {1}", "CloseReason", e.CloseReason)
    messageBoxVB.AppendLine()
    messageBoxVB.AppendFormat("{0} = {1}", "Cancel", e.Cancel)
    messageBoxVB.AppendLine()
    MessageBox.Show(messageBoxVB.ToString(),"FormClosing Event")

End Sub

備註

當表單正在關閉時,就會 FormClosing 發生此事件。 關閉表單時,會處置表單,釋放與表單相關聯的所有資源。 如果您取消此事件,表單仍會保持開啟狀態。 若要取消表單的關閉,請將 Cancel 傳遞至事件處理常式的 FormClosingEventArgs 屬性設定為 true

當表單顯示為強制回應對話方塊時,按一下 [ 關閉 ] 按鈕 (表單右上角的 X 按鈕,) 會使表單隱藏,並將 DialogResult 屬性設定為 DialogResult.Cancel 。 當使用者按一下[關閉] 按鈕時,您可以在表單事件的事件處理常式 FormClosing 中設定 DialogResult 屬性,以覆寫指派給 DialogResult 屬性的值。

注意

Close在顯示為無強制回應視窗的 Form 上呼叫 方法時,您無法呼叫 Show 方法讓表單顯示,因為表單的資源已經釋放。 若要隱藏表單,然後讓表單可見,請使用 Hide 方法。

如果表單是多文檔介面 (MDI) 父表單, FormClosing 則會在引發 MDI 父表單的事件之前引發所有 MDI 子表單 FormClosing 的事件。 同樣地, FormClosed 所有 MDI 子表單的事件都會在引發 MDI 父表單的事件之前 FormClosed 引發。 FormClosing取消 MDI 子表單的事件不會防止 FormClosing 引發 MDI 父表單的事件。 不過,取消事件會設定 trueCancel 為類別的 FormClosingEventArgs 屬性,該類別會當做參數傳遞至父表單。 若要強制關閉所有 MDI 父表單和子表單,請在 MDI 父表單中將 Cancel 屬性設定為 false

如需處理事件的詳細資訊,請參閱 處理和引發事件

適用於

另請參閱