none
Como interceptar el botón de cierre (X) en un formulario? RRS feed

  • Pregunta

  • Hola,

    necesito poder interceptar de alguna forma cuando el usuario pulse en la (X) del formulario principal (form MDI) para preguntar si realmente desea salir, pero no encuentro ninguna opción para hacerlo.

    ¿Esto es posible?, y si lo es, ¿como?

    miércoles, 1 de agosto de 2012 9:27

Respuestas

  • Hola,

    puede usar el evento FormClosing y ahí preguntar si el usuario quiere salir o no.

    Form.FormClosing (Evento)

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
      if (MessageBox.Show(this, "¿Esta seguro que desea salir?", "", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
        e.Cancel = true;
    }


    Atentamente, Sergio.

    Blog
    Twitter


    • Editado sergiomf miércoles, 1 de agosto de 2012 9:32
    • Marcado como respuesta weatherby miércoles, 1 de agosto de 2012 15:16
    miércoles, 1 de agosto de 2012 9:32

Todas las respuestas

  • Hola,

    puede usar el evento FormClosing y ahí preguntar si el usuario quiere salir o no.

    Form.FormClosing (Evento)

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
      if (MessageBox.Show(this, "¿Esta seguro que desea salir?", "", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
        e.Cancel = true;
    }


    Atentamente, Sergio.

    Blog
    Twitter


    • Editado sergiomf miércoles, 1 de agosto de 2012 9:32
    • Marcado como respuesta weatherby miércoles, 1 de agosto de 2012 15:16
    miércoles, 1 de agosto de 2012 9:32
  • Hola,

    al usar este evento me encuentro con un problema, que como también se puede salir de la aplicación usando la opción "Salir" de un menú, cuando en esta opción encuentra this.Close() me acaba cerrando el formulario aunque le diga que no.

    miércoles, 1 de agosto de 2012 14:00
  • Bueno, finalmente he prescindido del método Close() para esto y me ha funcionado.

    Gracias.

    miércoles, 1 de agosto de 2012 15:16