C#Windows窗体:关闭执行[处理]

时间:2010-05-25 15:11:31

标签: c# winforms

如何让我的Windows窗体在关闭时执行某些操作。

6 个答案:

答案 0 :(得分:32)

处理FormClosed事件。

为此,请转到“属性”窗口中的“事件”选项卡,然后双击FormClosed事件为其添加处理程序。

然后,您可以将代码放入生成的MyForm_FormClosed处理程序中。

您也可以通过覆盖OnFormClosed方法来实现此目的;为此,请在代码窗口中键入override onformcl,在IntelliSense中键入OnFormClosed

如果您希望能够阻止表单关闭,请改为处理FormClosing事件,并将e.Cancel设置为true

答案 1 :(得分:15)

或另一种方法是从System.Windows.Forms.Form重写OnFormClosed()或OnFormClosing()方法。

是否应该使用此方法取决于问题的上下文,并且当表单将被分类多次并且它们都需要执行相同的代码时更有用。

如果你做同样的事情,事件对一个或两个实例更有用。

public class FormClass : Form
{
   protected override void OnFormClosing(FormClosingEventArgs e)
   {
        base.OnFormClosing(e);
        // Code
   } 
}

答案 2 :(得分:8)

WinForms有两个您可能想要查看的事件。

第一个是FormClosing事件,在表单实际关闭之前发生。在这种情况下,您仍然可以访问表单类中的任何控件和变量。您也可以通过设置e.Cancel = true;(其中eSystem.Windows.Forms.FormClosingEventArgs作为第二个参数发送到FormClosing)来取消表单。

第二个是FormClosed事件,在表单关闭后发生。此时,您无法访问表单所具有的任何控件,尽管您仍然可以对变量进行清理(例如,关闭托管资源)。

答案 3 :(得分:3)

为表单的FormClosed事件添加事件处理程序。

public class Form1
{

    public Form1()
    {    
        this.FormClosed += MyClosedHandler;
    }

    protected void MyClosedHandler(object sender, EventArgs e)
    {
        // Handle the Event here.
    }
}

答案 4 :(得分:2)

 public FormName()
 {
      InitializeComponent();
      this.FormClosed += FormName_FormClosed;
 }

private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
   //close logic here
}

答案 5 :(得分:-3)

语法:

   form_name.ActiveForm.Close();

示例:

   {
         Form1.ActiveForm.close();
   }