none
Que evento utilizar para realizar una acción antes de cerrar el formulario en la esquina superior. RRS feed

  • Pregunta

  • Que evento utilizar para realizar una acción antes de cerrar el formulario en la esquina superior. He intentado con el formclosing pero este evento se ejecuta inclusive al cerrar el formulario en tiempo de ejecución y yo necesito que me ejecute determinado código sólo en el momento que doy click en la esquina del formulario.

            MaximizeBox = False 'para que no aparezca el boton de maximizar ventana
            MinimizeBox = False 'para que no aparezca el boton de minimizar ventana
            StartPosition = FormStartPosition.CenterScreen 'centra el formulario en la ventana

    Esto lo pongo en el load para que sólo me aparezca el botom de la X para cerrar el formulario.

    como repito arriba el formclosing se ejecuta sin importar si lo cierro manualmente o doy en código el .close pero yo necesito que se ejecute determinado código sólo si se le da click en el botom X de la esquina superior del formulario.

    • Cambiado Enrique M. Montejo miércoles, 5 de abril de 2017 7:09 Pregunta relacionada con Windows Forms.
    lunes, 3 de abril de 2017 20:18

Todas las respuestas

  • Hola 

     Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
            MessageBox.Show("cerrar")
            e.Cancel = False
        End Sub

    Prueba este codigo, veras que antes de cerrar te dispara el messagebox, la idea es que coloques el codigo que deseas ahi y despues el e.cancel = false para q termine de cerrar

    Saludos


    Si logré resolver tu consulta, no olvides votar como útil y/o marcar como respuesta.

    lunes, 3 de abril de 2017 20:47
  • Hola Frank Jarquin,

    El evento FormClosing se ejecuta antes de cerrar por completo el formulario, ahí tienes que ejecutar tus acciones, además mediante la propiedad CloseReason del evento 'FormClosingEventArgs' puedes validar ´por qué se está cerrando.

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) .....
        If e.CloseReason = CloseReason.UserClosing Then
            'El usuario cerró la aplicación
            'Acciones
        End If
    End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Frank Jarquin lunes, 3 de abril de 2017 22:13
    • Desmarcado como respuesta Frank Jarquin martes, 4 de abril de 2017 0:54
    lunes, 3 de abril de 2017 21:09
  • Gracias JC NaupaCrispín eso es lo que necesitaba, encontrar la forma de identificar si es el usuario que está cerrando el formulario o si es una acción de código ejecutada.
    lunes, 3 de abril de 2017 22:14
  • Hola en principio viendo el código creí que estaba solucionado el problema pero resulta que el evento FormClosing y el evento CloseReason.UserClosing se ejecuta como true cuando cierro el fomulario por código y yo necesito detectar cuando se cierra por código y cuando es un usuario que lo cierra dando click en la esquina superior del Formulario.

    Private Sub Contraseña_Administrador_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing

        

    If e.CloseReason = CloseReason.UserClosing Then

    'SI EL USUARIO LO CIERRA DANDO CLICK EN LA ESQUINA SUPERIOR

                     Formulario_Ingreso.show()           

                     Me.Close()

    Else

    'SI LO CERRE POR CÓDIGO PARA INGRESAR AL MENU PRINCIPAL

                     Menu_Principal.Show()

                     Me.close

    End If

    End Sub

    En este código se ejecuta el if ingresando a la primera parte como si se le hubiese dado click en la esquina superior cuando en realidad se ha ejecutado una instrucción por código que nos debería enviar al else de este código.
    martes, 4 de abril de 2017 0:53