none
Cerrar formulario al perder el foco RRS feed

  • Pregunta

  • Estuve intentando con varias soluciones que encontré pero ninguna me funcionó. Cómo hago para que se cierre un formulario (secundario) si hago click en el formulario principal?
    martes, 14 de agosto de 2012 22:23

Todas las respuestas

  • si en el control principa tienes la instancia de ese form secundaria solo deberias usar el Close()

    pero esto solo lo lograrias si ese form fue abierto desde el form principa

    Private frm As Form1

    private sub button1_click(..)

        frm = New Form1

       frm.Show()

    End sub

    como aqui tiene la instancia del form1 podrias usar el close desde otro evento

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 14 de agosto de 2012 22:57
  • Creo que no lo expliqué bien. Tengo el formulario principal, al hacer click en un boton aparece el formulario secundario. Lo que quiero es que al volver al principal el secundario se cierre automaticamente
    miércoles, 15 de agosto de 2012 0:13
  • si eso se entendio

    pero ese cerrado automatico alguien tiene que hacerlo, y es el form principal en algun evento, quizas en el gotfocus o en el activate realizar el cierre del form que se abrio

    ademas no comentas como creas y lanzas el form secundario desde el principal?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 15 de agosto de 2012 0:45
  • El form secundario lo creé en diseño y lo lanzo con el form.show. Lo uso como una ventana flotante con un menu.
    miércoles, 15 de agosto de 2012 1:11
  • para cerrar un formulario desde cualquier lugar debes ir a las propiedades del proyecto->en  aplicacion -> modo de cerrado: al cerrar ultimo formulario.

    es cambiar una propiedad.

    luego para cerrar el formulario deseado desde cualquier parte de tu aplicacion  lo haces con el comando.

    my.forms.nombreformularioacerrar.close()

    • Editado enterplasma miércoles, 15 de agosto de 2012 5:13
    miércoles, 15 de agosto de 2012 5:05
  • Hola

    para poder cerrar el formulario cuando pierde el foco tienes que utilizar el evento Deactivate del formulario

        Private Sub Form1_Deactivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Deactivate
            Me.Close()
        End Sub
    Saludos
    miércoles, 15 de agosto de 2012 8:32
  • Ya probé esa opción pero me aparece un excepcion de acceso en un openfiledialog que tiene el form. Si hago click en el form principal funciona correctamente (se cierra el form secundario), pero si presiono en el secundario me aparece la excepción
    miércoles, 15 de agosto de 2012 11:29
  • Su pongo que lo que sucede es que al abrir el openfiledialog el formulario secundario pierde el enfoque y se cierra

    ¿Y utilizando el evento Activated del formulario principal?

    Todo el código va en el formulario principal

        Dim formSecundario As Form1
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If formSecundario Is Nothing Then
                formSecundario = New Form1
                formSecundario.Show()
            End If
        End Sub
        Private Sub frmBuscarCliente_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
            If formSecundario IsNot Nothing Then
                formSecundario.Close()
                formSecundario = Nothing
            End If
        End Sub

    miércoles, 15 de agosto de 2012 13:48
  • El problema es que el boton que muestra el secundario está en un control de usuario dentro de un formulario mdi.
    miércoles, 15 de agosto de 2012 14:16
  • ¿y el mdi es el formulario principal?

    Yo e puesto el boton como ejemplo

    miércoles, 15 de agosto de 2012 14:38
  • Tengo el form principal con varios mdi, cada mdi contiene varios controles de usuario (como mdis del mdi) que al cargarlos uso dock.fill.
    miércoles, 15 de agosto de 2012 15:26