Form.FormClosing 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在窗体关闭之前发生。
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。
若要运行示例代码,请将其粘贴到包含命名Form类型的Form1实例的项目中。 然后,确保事件处理程序与 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 事件。 关闭窗体后,将释放它,释放与表单关联的所有资源。 如果取消此事件,窗体将保持打开状态。 若要取消窗体的关闭,请将传递给事件处理程序的属性FormClosingEventArgs设置为 Canceltrue。
当窗体显示为模式对话框时,单击“ 关闭 ”按钮(窗体右上角带有 X 的按钮)会导致窗体隐藏,并将 DialogResult 属性设置为 DialogResult.Cancel。 当用户单击关闭按钮时,可以通过在窗体事件的事件处理程序FormClosing中设置DialogResult属性来替代分配给DialogResult属性的值。
如果窗体是多文档接口 (MDI) 父窗体,则会 FormClosing 在引发 MDI 父窗体 FormClosing 的事件之前引发所有 MDI 子窗体的事件。 同样, FormClosed 在引发 MDI 父窗体的事件之前 FormClosed ,将引发所有 MDI 子窗体的事件。 取消 FormClosing MDI 子窗体的事件不会阻止 FormClosing 引发 MDI 父窗体的事件。 但是,取消事件将设置为trueCancel作为参数传递给父窗体的FormClosingEventArgs类的属性。 若要强制关闭所有 MDI 父窗体和子窗体,请将 Cancel 属性设置为 false MDI 父窗体。
有关处理事件的详细信息,请参阅 处理和引发事件。