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 発生を報告します。 このレポートは、イベントが発生したタイミングを確認するのに役立ち、デバッグに役立ちます。 複数のイベントまたは頻繁に発生するイベントを報告するには、 を Console.WriteLine に置き換えるかMessageBox.Show、複数行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設定されます。 ユーザーが [閉じる] ボタンをクリックしたときにプロパティにDialogResult割り当てられた値をオーバーライドするには、フォームのイベントのイベント ハンドラーで プロパティをFormClosing設定DialogResultします。

注意

Closeモードレス ウィンドウとして表示される でFormメソッドが呼び出されると、フォームのリソースが既に解放されているため、 メソッドを呼び出Showしてフォームを表示することはできません。 フォームを非表示にして表示するには、 メソッドを Hide 使用します。

フォームがマルチドキュメント インターフェイス (MDI) 親フォームの場合、 FormClosing MDI 親フォームのイベントが発生する前に、すべての MDI 子フォームの FormClosing イベントが発生します。 同様に FormClosed 、すべての MDI 子フォームのイベントは、MDI 親フォームのイベントが FormClosed 発生する前に発生します。 MDI 子フォームの FormClosing イベントを取り消しても、MDI 親フォームのイベントが発生することはありません FormClosing 。 ただし、イベントを取り消すと、親フォームにtrueCancelパラメーターとして渡されるクラスの FormClosingEventArgs プロパティに設定されます。 すべての MDI 親フォームと子フォームを強制的に閉じるには、MDI 親フォームで プロパティを にfalse設定Cancelします。

イベントの処理の詳細については、「処理とイベントの発生」を参照してください。

適用対象

こちらもご覧ください