C#Windows窗体:关闭执行

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

处理FormClosed事件。

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

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

你也可以通过覆盖OnFormClosed方法来做到这一点; override onformcl ,在代码窗口中键入override onformcl ,在IntelliSense中键入override onformcl

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

或者另一种方法是从System.Windows.Forms.Form中覆盖OnFormClosed()或OnFormClosing()方法。

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

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

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

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

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

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

将事件处理程序添加到Form的FormClosed事件。

 public class Form1 { public Form1() { this.FormClosed += MyClosedHandler; } protected void MyClosedHandler(object sender, EventArgs e) { // Handle the Event here. } } 
  public FormName() { InitializeComponent(); this.FormClosed += FormName_FormClosed; } private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e) {  //close logic here } 

句法 :

  form_name.ActiveForm.Close(); 

例:

  { Form1.ActiveForm.close(); }