none
¿Como cerrar Form desde otro Form? RRS feed

Respuestas

  • "George curioso" preguntó:

    > como podría cerrar desde el Form3 al Form1

    Hola:

    Si Form3 lo has abierto desde Form1, podrías cerrar éste último utilizando la instancia predeterminada que tienen todos los formularios en Visual Basic, es decir, llamando desde Form3 al método Close de Form1:

    Public Class Form3
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Form1.Close()
        End Sub
    
    End Class


    Pero si por una casualidad de la vida, Form1 es el formulario de inicio de tu aplicación, al cerrar éste se cerrará también la aplicación. Para modificar este comportamiento predeterminado, abre las Propiedades del proyecto, selecciona la pestaña Aplicación, y en el apartado Modo de apagado, selecciona el valor Al cerrar el último formulario.

    Ahora bien, si Form1 lo has abierto desde Form3 mediante una variable objeto declarada:

         Dim frm As New Form1()
         frm.Show()


    Entonces podrías utilizar dicha variable objeto para cerrar Form1:

       
    frm.Close()

    En resumidas cuentas, para cerrar un formulario tienes que llamar a su método Close, bien utilizando la instancia predeterminada del formulario, bien utilizando la variable objeto que lo referencia.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    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.


    miércoles, 7 de marzo de 2018 16:32
    Moderador

Todas las respuestas

  • No puedes cerrar "EL" Form3. Tienes que cerrar "UNA" instancia del Form3. Recuerda que un Form se puede abrir en pantalla varias veces y tienes varias copias del mismo form abiertas a la vez. Incluso aunque tú sepas que solo has abierto una, el compilador no lo sabe, y te pide que indiques la instancia sobre la que hay que invocar el comando Close.

    Si abres el form así:

    Dim frm as New Form3() : frm.Show()

    Pues entonces para cerrarlo tienes que llamar a

    frm.Close()

    Observa que el Close se invoca sobre la INSTANCIA que en este ejemplo hemos llamado "frm", y no sobre la CLASE "Form3".

    Evidentemente, en el sitio donde lo abriste y usaste la variable "frm", esa variable hay que conservarla y hacérsela llegar al Form1 con el fin de que éste puede usarla para cerrar el Form3. La forma de hacer esto depende de dónde hayas construído "frm" y cómo se llegue desde ahí al Form1.

    También existe una variable global, que se llama "Application.OpenForms", que automáticamente conserva todas las instancias abiertas. Si usas esta variable, te ahorras tener que arastrar hasta el Form1 esa instancia que hemos llamado "frm", pero como contrapartida el Form1 tendrá que recorrer la colección de OpenForms buscando la instancia concreta que quieres cerrar.

    miércoles, 7 de marzo de 2018 16:17
  • "George curioso" preguntó:

    > como podría cerrar desde el Form3 al Form1

    Hola:

    Si Form3 lo has abierto desde Form1, podrías cerrar éste último utilizando la instancia predeterminada que tienen todos los formularios en Visual Basic, es decir, llamando desde Form3 al método Close de Form1:

    Public Class Form3
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Form1.Close()
        End Sub
    
    End Class


    Pero si por una casualidad de la vida, Form1 es el formulario de inicio de tu aplicación, al cerrar éste se cerrará también la aplicación. Para modificar este comportamiento predeterminado, abre las Propiedades del proyecto, selecciona la pestaña Aplicación, y en el apartado Modo de apagado, selecciona el valor Al cerrar el último formulario.

    Ahora bien, si Form1 lo has abierto desde Form3 mediante una variable objeto declarada:

         Dim frm As New Form1()
         frm.Show()


    Entonces podrías utilizar dicha variable objeto para cerrar Form1:

       
    frm.Close()

    En resumidas cuentas, para cerrar un formulario tienes que llamar a su método Close, bien utilizando la instancia predeterminada del formulario, bien utilizando la variable objeto que lo referencia.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    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.


    miércoles, 7 de marzo de 2018 16:32
    Moderador