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

soo*_*ise 23 c# winforms

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

SLa*_*aks 34

处理FormClosed活动.

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

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

你也可以通过覆盖OnFormClosed方法来做到这一点; 为此,请override onformcl在代码窗口中输入并OnFormClosed从IntelliSense中输入.

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

  • @hello_earth:.Net 1中有一个`Closed`事件; 由于各种问题,它已在.Net 2.0中被替换.最初的`Closed`事件仍然存在兼容性,但是被隐藏了. (2认同)

Ian*_*Ian 15

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

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

如果您正在执行相同的操作,事件对于一个或两个实例更有用.

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

  • **并调用`base.OnFormClosing(e)`.** (7认同)

Pow*_*ord 8

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

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

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

  • 更新了这个以使用`FormClosing`和`FormClosed`作为`Closing`和`Closed`被弃用. (2认同)