我的表单关闭时执行代码

我的程序在运行时对注册表进行了一些更改,如果它们没有正确回滚,它们可能会导致用户出现一些问题。 例如,他们可能无法使用他们的Internet连接。

因此,我需要确保在关闭应用程序时,我将所有内容恢复正常。 要做到这一点,我需要知道他们何时按下了表单的“关闭”按钮。 我怎样才能做到这一点? 有没有我可以处理的事件?

我认为你需要的不是访问关闭按钮,而是访问窗体关闭时触发的事件

从之前的SOpost中可以看出,你可能需要的是:

void FormClosed(object sender, FormClosedEventArgs e) { // do something useful } 

这里有更多的可能性。

1)使用表单的FormClosing事件:

 private void form_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { // User clicked 'X' button if (someThing) e.Cancel = true; // Disable Form closing } } 

2)您也可以通过将ControlBox设置为false来隐藏“X”按钮。 但这也会隐藏最小化和最大化按钮。

3)这仅禁用“X”按钮。 把它放在你的表格中。

  private const int CP_NOCLOSE_BUTTON = 0x200; protected override CreateParams CreateParams { get { new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); CreateParams cp = base.CreateParams; cp.ClassStyle |= CP_NOCLOSE_BUTTON; return cp; } } 

FormClosing之前,您可以订阅一个名为FormClosing的事件,并允许您在表单关闭之前validation/更改所需的设置

 public Form1() { InitializeComponent(); FormClosing += Form1_FormClosing; } void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Reset values }