Form.Closed 事件

关闭窗体后发生。

**命名空间:**System.Windows.Forms
**程序集:**System.Windows.Forms(在 system.windows.forms.dll 中)

语法

声明
Public Event Closed As EventHandler
用法
Dim instance As Form
Dim handler As EventHandler

AddHandler instance.Closed, handler
public event EventHandler Closed
public:
event EventHandler^ Closed {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
/** @event */
public void add_Closed (EventHandler value)

/** @event */
public void remove_Closed (EventHandler value)
JScript 支持使用事件,但不支持进行新的声明。

备注

警告

在 .NET Framework 版本 2.0 中,Closed 事件已过时,请改用 FormClosed 事件。

此事件在用户或窗体的 Close 方法关闭该窗体后发生。若要防止窗体关闭,请处理 Closing 事件,并将传递给事件处理程序的 CancelEventArgsCancel 属性设置为 true

可以使用此事件执行一些任务,如释放窗体使用的资源,还可使用此事件保存输入窗体中的信息或更新其父窗体。

警告

当调用 Application.Exit 方法以退出应用程序时,不引发 Form.ClosedForm.Closing 事件。如果在必须执行的其中一个事件中有验证代码,则在调用 Exit 方法之前,应分别为每个打开的窗体调用 Form.Close 方法。

如果窗体是 MDI 父窗体,则在引发 MDI 父窗体的 Closing 事件之前将引发所有 MDI 子窗体的 Closing 事件。另外,在引发 MDI 父窗体的 Closed 事件之前,将引发所有 MDI 子窗体的 Closed 事件。

有关处理事件的更多信息,请参见 使用事件

示例

下面的代码示例阐释了如何使用 SetDesktopLocationClosedLoadActivatedActivate 成员。若要运行此示例,请将以下代码粘贴到一个名为 Form1 的窗体中,该窗体含有一个名为 Button1Button 和两个分别名为 Label1Label2Label 控件。

Shared x As Integer = 200
Shared y As Integer = 200

Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

    ' Create a new Form1 and set its Visible property to true.
    Dim form2 As New Form1
    form2.Visible = True

    ' Set the new form's desktop location so it appears below and 
    ' to the right of the current form.
    form2.SetDesktopLocation(x, y)
    x += 30
    y += 30

    ' Keep the current form active by calling the Activate method.
    Me.Activate()
    Me.Button1.Enabled = False
End Sub



' Updates the label text to reflect the current values of x and y, 
' which was were incremented in the Button1 control's click event.
Private Sub Form1_Activated(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Activated
    Label1.Text = "x: " & x & " y: " & y
    Label2.Text = "Number of forms currently open: " & count
End Sub

Shared count As Integer = 0

Private Sub Form1_Closed(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Closed
    count -= 1
End Sub

Private Sub Form1_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
    count += 1
End Sub
static int x = 200;
static int y = 200;

private void Button1_Click(System.Object sender, 
    System.EventArgs e)
{
    // Create a new Form1 and set its Visible property to true.
    Form1 form2 = new Form1();
    form2.Visible = true;

    // Set the new form's desktop location so it  
    // appears below and to the right of the current form.
    form2.SetDesktopLocation(x, y);
    x += 30;
    y += 30;

    // Keep the current form active by calling the Activate
    // method.
    this.Activate();
    this.Button1.Enabled = false;
}



// Updates the label text to reflect the current values of x 
// and y, which was were incremented in the Button1 control's 
// click event.
private void Form1_Activated(object sender, System.EventArgs e)
{
    Label1.Text = "x: "+x+" y: "+y;
    Label2.Text = "Number of forms currently open: "+count;
}

static int count = 0;

private void Form1_Closed(object sender, System.EventArgs e)
{
    count -= 1;
}

private void Form1_Load(object sender, System.EventArgs e)
{
    count += 1;
}
static int x = 200;
static int y = 200;
void Button1_Click( System::Object^ sender, System::EventArgs^ e )
{
   
   // Create a new Form1 and set its Visible property to true.
   Form1^ form2 = gcnew Form1;
   form2->Visible = true;
   
   // Set the new form's desktop location so it  
   // appears below and to the right of the current form.
   form2->SetDesktopLocation( x, y );
   x += 30;
   y += 30;
   
   // Keep the current form active by calling the Activate
   // method.
   this->Activate();
   this->Button1->Enabled = false;
}


// Updates the label text to reflect the current values of x 
// and y, which was were incremented in the Button1 control's 
// click event.
void Form1_Activated( Object^ sender, System::EventArgs^ e )
{
   Label1->Text = String::Format( "x: {0} y: {1}", x, y );
   Label2->Text = String::Format( "Number of forms currently open: {0}", count );
}

static int count = 0;
void Form1_Closed( Object^ sender, System::EventArgs^ e )
{
   count -= 1;
}

void Form1_Load( Object^ sender, System::EventArgs^ e )
{
   count += 1;
}
private static int x = 200;
private static int y = 200;

private void button1_Click(Object sender, System.EventArgs e)
{
    // Create a new Form1 and set its Visible property to true.
    Form1 form2 = new Form1();
    form2.set_Visible(true);
    // Set the new form's desktop location so it  
    // appears below and to the right of the current form.
    form2.SetDesktopLocation(x, y);
    x += 30;
    y += 30;
    // Keep the current form active by calling the Activate
    // method.
    this.Activate();
    this.button1.set_Enabled(false);
} //button1_Click

// Updates the label text to reflect the current values of x 
// and y, which was were incremented in the button1 control's 
// click event.
private void Form1_Activated(Object sender, System.EventArgs e)
{
    label1.set_Text("x: " + x + " y: " + y);
    label2.set_Text("Number of forms currently open: " + count);
} //Form1_Activated

private static int count = 0;

private void Form1_Closed(Object sender, System.EventArgs e)
{
    count -= 1;
} //Form1_Closed

private void Form1_Load(Object sender, System.EventArgs e)
{
    count += 1;
} //Form1_Load

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Form 类
Form 成员
System.Windows.Forms 命名空间
Form.IsMdiContainer 属性
OnClosed
Load