Ejecutando código cuando mi formulario está cerrado

Mi progtwig hace algunos cambios en el registro mientras se está ejecutando, y si no se revierten correctamente, pueden causar algunos problemas al usuario. Por ejemplo, es posible que no puedan usar su conexión a Internet.

Así que necesito asegurarme de que cuando cierran la aplicación, todo vuelva a la normalidad. Para hacer esto, necesito saber cuándo han presionado el botón Cerrar del formulario. ¿Cómo puedo hacer eso? ¿Hay algún evento que pueda manejar?

Creo que lo que necesita no es acceder al botón de cerrar, sino acceder al evento que se activa cuando se cierra el formulario.

Tomado de esta publicación SO anterior, lo que podría necesitar es algo así:

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

Hay más posibilidades aquí.

1) Utilice el evento FormClosing del formulario:

 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) También puede ocultar el botón ‘X’ configurando ControlBox en falso. Pero esto también ocultará los botones Minimizar y Maximizar.

3) Esto deshabilita solo el botón ‘X’. Colócalo en tu forma.

  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; } } 

Hay un evento al que puede suscribirse al FormClosing this fire antes de FormClose y le permite validar / cambiar la configuración que necesita antes de que se cierre el formulario

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