Form.Closing 事件

定义

关闭窗体时发生。

public:
 event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
[System.ComponentModel.Browsable(false)]
public event System.ComponentModel.CancelEventHandler Closing;
[System.ComponentModel.Browsable(false)]
public event System.ComponentModel.CancelEventHandler? Closing;
member this.Closing : System.ComponentModel.CancelEventHandler 
[<System.ComponentModel.Browsable(false)>]
member this.Closing : System.ComponentModel.CancelEventHandler 
Public Custom Event Closing As CancelEventHandler 

事件类型

属性

示例

以下示例使用 Closing 来测试 中的 TextBox 文本是否已更改。 如果有,系统会询问用户是否保存对文件的更改。

private:
   void Form1_Closing( Object^ /*sender*/, System::ComponentModel::CancelEventArgs^ e )
   {
      // Determine if text has changed in the textbox by comparing to original text.
      if ( textBox1->Text != strMyOriginalText )
      {
         // Display a MsgBox asking the user to save changes or abort.
         if ( MessageBox::Show( "Do you want to save changes to your text?", "My Application", MessageBoxButtons::YesNo ) == ::DialogResult::Yes )
         {
            // Cancel the Closing event from closing the form.
            e->Cancel = true;

            // Call method to save file...
         }
      }
   }
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
   // Determine if text has changed in the textbox by comparing to original text.
   if (textBox1.Text != strMyOriginalText)
   {
      // Display a MsgBox asking the user to save changes or abort.
      if(MessageBox.Show("Do you want to save changes to your text?", "My Application",
         MessageBoxButtons.YesNo) ==  DialogResult.Yes)
      {
         // Cancel the Closing event from closing the form.
         e.Cancel = true;
         // Call method to save file...
      }
   }
}
   Private Sub Form1_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
      ' Determine if text has changed in the textbox by comparing to original text.
      If textBox1.Text <> strMyOriginalText Then
         ' Display a MsgBox asking the user to save changes or abort.
         If MessageBox.Show("Do you want to save changes to your text?", "My Application", MessageBoxButtons.YesNo) = DialogResult.Yes Then
            ' Cancel the Closing event from closing the form.
            e.Cancel = True
         End If ' Call method to save file...
      End If
   End Sub
End Class

注解

注意

事件Closing从 .NET Framework 2.0 开始已过时;请改用 事件FormClosing

Closing 事件在窗体关闭时发生。 关闭窗体时,将释放在 对象中创建的所有资源,并释放窗体。 如果取消此事件,窗体将保持打开状态。 若要取消窗体的关闭,请将 Cancel 传递给事件处理程序的 CancelEventArgs 的 属性设置为 true

当窗体显示为模式对话框时,单击“ 关闭 ”按钮 (窗体右上角带有 X 的按钮) 会导致窗体被隐藏,并将 DialogResult 属性设置为 DialogResult.Cancel。 在用户单击“关闭”按钮时,可以通过在窗体事件的DialogResult事件处理程序中设置 DialogResult 属性来替代分配给 属性Closing的值。

注意

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

注意

调用 Form.Closed 方法退出应用程序时,Application.Exit不会引发 和 Form.Closing 事件。 如果其中任一事件中有必须执行的验证代码,则应在调用 方法之前单独为每个打开的窗体调用 Form.CloseExit 方法。

如果窗体是 MDI 父窗体,则会在 Closing 引发 MDI 父窗体的事件之前引发所有 MDI 子窗体 Closing 的事件。 此外, Closed 所有 MDI 子窗体的事件都在引发 MDI 父窗体的事件之前 Closed 引发。 取消 Closing MDI 子窗体的事件不会阻止 Closing 引发 MDI 父窗体的事件。 但是,取消事件将设置为 trueCancel 作为参数传递给父窗体的 的 属性 CancelEventArgs 。 若要强制关闭所有 MDI 父窗体和子窗体,请在 Cancel MDI 父窗体中将 false 属性设置为 。

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

适用于

另请参阅