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。 在用户单击“关闭”按钮时,可以通过在窗体事件的DialogResult事件处理程序中设置 DialogResult 属性来替代分配给 属性FormClosing的值。

注意

Close在显示为无模式窗口的 上Form调用 方法时,无法调用 Show 方法使窗体可见,因为窗体的资源已释放。 若要隐藏窗体并使其可见,请使用 Hide 方法。

如果窗体是多文档接口 (MDI) 父窗体,则会 FormClosing 在引发 MDI 父窗体的事件之前引发所有 MDI 子窗体 FormClosing 的事件。 同样, FormClosed 所有 MDI 子窗体的事件在引发 MDI 父窗体的事件之前 FormClosed 引发。 取消 FormClosing MDI 子窗体的事件不会阻止 FormClosing 引发 MDI 父窗体的事件。 但是,取消事件将设置为trueCancel作为参数传递给父窗体的 FormClosingEventArgs 类的 属性。 若要强制关闭所有 MDI 父窗体和子窗体,请在 Cancel MDI 父窗体中将 false 属性设置为 。

有关处理事件的详细信息,请参阅 处理和引发事件

适用于

另请参阅