none
Evitar que se cierre un Form en el evento FormClosing - Visual Studio 2010 RRS feed

  • Pregunta

  • Saludos a todos:

    En mi Form tengo el evento FormClosing y le coloqué este código:

                If MessageBox.Show("¿Desea salir?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    Me.Dispose()
                End If
    Lo que deseo hacer, es que cuando le ponga NO al mensaje, no me cierre el Form, porque a pesar que le de NO al mensaje, igual me cierra. Como lo podría hacer por favor. Muchas gracias.

    • Editado Miguel_Antonio lunes, 14 de diciembre de 2015 16:12 Modificacion de texto.
    lunes, 14 de diciembre de 2015 16:05

Respuestas

  • Hola Miguel:

    Prueba de esta forma:

    If MessageBox.Show("¿Desea realmente abandonar la aplicación?", "CIERRE APLICACIÓN", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = System.Windows.Forms.DialogResult.Yes Then End Else e.Cancel = True

    End If

    Un saludo.

    Gemma

    • Marcado como respuesta Miguel_Antonio lunes, 14 de diciembre de 2015 17:09
    lunes, 14 de diciembre de 2015 16:57
  • "Miguel OsPaCh" preguntó:

    > Lo que deseo hacer, es que cuando le ponga NO al mensaje, no me cierre el Form,
    > porque a pesar que le de NO al mensaje, igual me cierra. Como lo podría hacer
    > por favor.

    Hola, Miguel:

    Para cancelar el cierre del formulario en el evento FormClosing, tienes que establecer el valor True a la propiedad Cancel del parámetro FormClosingEventArgs, tal y como muestra el siguiente ejemplo:

        Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    
            Dim dr As DialogResult = MessageBox.Show("¿Desea salir?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    
            If (dr = DialogResult.No) Then
                ' Cancelamos el cierre del formulario.
                e.Cancel = True
            Else
                Me.Dispose()
            End If
    
        End Sub
    

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Miguel_Antonio lunes, 14 de diciembre de 2015 17:09
    lunes, 14 de diciembre de 2015 17:03
    Moderador

Todas las respuestas

  • Hola Miguel:

    Prueba de esta forma:

    If MessageBox.Show("¿Desea realmente abandonar la aplicación?", "CIERRE APLICACIÓN", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = System.Windows.Forms.DialogResult.Yes Then End Else e.Cancel = True

    End If

    Un saludo.

    Gemma

    • Marcado como respuesta Miguel_Antonio lunes, 14 de diciembre de 2015 17:09
    lunes, 14 de diciembre de 2015 16:57
  • "Miguel OsPaCh" preguntó:

    > Lo que deseo hacer, es que cuando le ponga NO al mensaje, no me cierre el Form,
    > porque a pesar que le de NO al mensaje, igual me cierra. Como lo podría hacer
    > por favor.

    Hola, Miguel:

    Para cancelar el cierre del formulario en el evento FormClosing, tienes que establecer el valor True a la propiedad Cancel del parámetro FormClosingEventArgs, tal y como muestra el siguiente ejemplo:

        Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    
            Dim dr As DialogResult = MessageBox.Show("¿Desea salir?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    
            If (dr = DialogResult.No) Then
                ' Cancelamos el cierre del formulario.
                e.Cancel = True
            Else
                Me.Dispose()
            End If
    
        End Sub
    

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Miguel_Antonio lunes, 14 de diciembre de 2015 17:09
    lunes, 14 de diciembre de 2015 17:03
    Moderador
  • "gemma_campillo" escribió:

    >  If MessageBox.Show("¿Desea realmente abandonar la aplicación?", ... Then
    >      End

    Gemma, vamos a ver si nos vamos olvidando de la instrucción End para finalizar bruscamente la ejecución de una aplicación. :-(

    Una aplicación Windows Forms tiene que finalizar normalmente, cuando se cierre su formulario principal, pero no hay que forzarle para que ésta finalice, porque lo único que puede suceder es que no se limpien o cierren correctamente aquellos recursos que estemos utilizando.

    Revisa los comentarios que aparecen en la ayuda de la instrucción End.


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    lunes, 14 de diciembre de 2015 17:10
    Moderador
  • Gracias a ustedes dos: gemma_campillo y Enrique M. Montejo me ayudaron mucho.

    Si logré lo que necesitaba. Saludos.

    lunes, 14 de diciembre de 2015 17:10