2009-05-24 1275 views
7

Estoy usando Microsoft Visual C# 2008 Express.¿Cómo agrego el código al botón de salida en un formulario C#?

En mi forma principal, hay ese botón X para cerrar el formulario en la parte superior derecha. ¿Cómo agrego código a este botón? En mi menú, tengo un elemento "Salir" y tiene un código que limpia y cierra mis bases de datos. ¿Cómo agrego el mismo código a este botón si el usuario elige eso como una forma de salir?

Gracias!

-Adeena

Respuesta

12

El uso del evento FormClosing debe detectar cualquier forma de cerrar el formulario.

0

Uso del Cerrado-evento de su WinForm.

+0

es que "FormClosed" o "FormClosing" ? ¿o no importa si todo lo que hago es cosas como cerrar bases de datos ...? – adeena

+0

Lo siento, error tipográfico: quise decir el evento cerrado. Pero acabo de leer que es reemplazado por el FormClosed-Event de .NET 2.0 updwards –

7

En la vista Diseño de su formulario, dentro de la ventana Propiedades, seleccione el botón Eventos y desplácese hacia abajo hasta los eventos "FormClosed" y "FormClosing".

Se llama a FormClosed después de cerrar el formulario.

FormClosing se llama antes se cierra el formulario, y también le permite cancelar el cierre, manteniendo la forma abierta:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    e.Cancel = true; 
} 
0

FormClosing/FormClosed le permite ver el evento de esa forma que puede coincidir con la solicitud saliendo. Sin embargo, hay otro evento que puede cablear llamado Application.ApplicationExit.

En el método Main:

Application.ApplicationExit += Application_ApplicationExit; 

... 

private static void Application_ApplicationExit(object sender, EventArgs e) { 

    // do stuff when the application is truly exiting, regardless of the reason 

} 
0

Este código se captura el usuario haga clic en la 'X' o el uso de Alt-F4 en un formulario para permitir que hagas algo. Tuve que usar esto porque necesitaba la acción para llamar a mi evento de cierre, y no lo llamaría cuando use el evento FormClosing debido a eventos de carreras.

/// <summary> 
/// This code captures the 'Alt-F4' and the click to the 'X' on the ControlBox 
/// and forces it to call MyClose() instead of Application.Exit() as it would have. 
/// This fixes issues where the threads will stay alive after the application exits. 
/// </summary> 
public const int SC_CLOSE = 0xF060; 
public const int WM_SYSCOMMAND = 0x0112; 
protected override void WndProc(ref System.Windows.Forms.Message m) 
{ 
    if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE) 
     MyClose(); 

    base.WndProc(ref m); 
} 
1

Si desea pedir al usuario "¿Está seguro que desea hacer cerca de esta forma?", A continuación, utilizar FormClosing, donde se puede establecer Cancel = True y la forma permanecería abierta.

Si desea cerrar algunos recursos solo cuando el formulario está definitivamente cerrado, entonces usa el evento FormClosed.

Si tiene el control de todo el código, entonces no importa. Pero lo que no quiere que suceda es limpiar los recursos usando FormClosing cuando el otro controlador del evento mantenga el formulario abierto.

0

doble clic en el botón de salida en form'design continuación simplemente llame al método Dispose()

0

método de acción Formulario //

protected override void OnFormClosing(FormClosingEventArgs e) 

      { 
      base.OnFormClosing(e); 

      if (e.CloseReason == CloseReason.WindowsShutDown) return; 

       switch (MessageBox.Show(this, "Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo)) 
        { 
         case DialogResult.No: 
          e.Cancel = true; 
          break; 
        default: 
          break; 
        } 
     } 
0
You can use form closing events choose or set closing event in properties window  
You can add dialog conditions based on what task you want to perform before closing form 

private void Form1_FormClosing(object sender,FormClosingEventArgs e) 
{ 
Application.Exit(); 
//you can also use Application.ExitThread(); 
} 
Cuestiones relacionadas