none
cerrar un formulario desde otro formulario RRS feed

  • Pregunta

  • hola,me gustaria que al presionar un boton de un formulario se cerrara otro que previamente estaba abierto,¿sabeis si se puede hacer esto? gracias
    viernes, 5 de marzo de 2010 22:48

Respuestas

  • Vale,      Dim F2 As New Form2  eso significar tener una instancia de Form2 por lo que la aplicacion no te cierra el formulario.

    por otro lado indicarte que como la declaracion de F2 la tienes a nivel de un metodo,para cerrarlo podrias hacer lo siguiente:

    for each frm as Form in Application.OpenForms
    if frm.Name="F2" then
       frm.close()
       exit for
    end if

    next

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Marcado como respuesta davsol sábado, 6 de marzo de 2010 15:24
    sábado, 6 de marzo de 2010 12:58
    Moderador
  • Claro, sustitye lo que tenias tu por lo que te he puesto.

    Tendrias otra forma de hacerlo que seria declarar tu F2 (form2) a nivel de clase o de aplicacion y podrias hacer F2.Close() desde donde quieras....

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Marcado como respuesta davsol sábado, 6 de marzo de 2010 15:24
    sábado, 6 de marzo de 2010 14:23
    Moderador

Todas las respuestas

  • Del formulario que tienes abierto, invoca al método Form.Close[1]:

    http://msdn.microsoft.com/es-es/library/system.windows.forms.form.close.aspx



    Saludos.




    Fernando Gómez
    www.fermasmas.com
    viernes, 5 de marzo de 2010 22:55
  • muchas gracias,voy a probar y ver eso
    viernes, 5 de marzo de 2010 22:57
  • No lo he conseguido,no me he enterado muy bien con tu ejemplo,se supone que al dar al boton debería cerrar otro formulario distinto a donde esta alojado el boton pero no me deja,o no lo he escrito bien:


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
           Form.Close[1]:
           
        End Sub
    viernes, 5 de marzo de 2010 23:07
  • Evidentemente no está bien. Primero, necesitas la referencia a la otra
    ventana (i.e. cuando haces Dim frm as new MiForm). Segundo, ya que lo
    tengas invocas al método Close de esa instancia. Quedaría algo así:



    Private sub Button1_Click(byval sender as object, byval e as EventArgs)
    handles Button1.Click

    frm.Close()

    End sub



    Revisa este artículo para mayor información:

    http://msdn.microsoft.com/es-es/library/aa289529.aspx



    Saludos.




    Fernando Gómez
    www.fermasmas.com
    viernes, 5 de marzo de 2010 23:17
  • lo he estado mirando y he probado de nuevo y aun así no logro que conecte un formulario con otro,yo uso la version del 2008 por si cambia algo. 
    viernes, 5 de marzo de 2010 23:31
  • Hola de nuevo.



    ¿puedes poner el código que estás utilizando? En particular, ¿podrías
    poner el código donde instancias el form que quieres cerrar?



    Saludos.




    Fernando Gómez
    www.fermasmas.com
    viernes, 5 de marzo de 2010 23:43
  • en el evento del boton debes poner eso que te menciona Fernando

    form2.close()

    o si deseas ocultar solo ponle

    form2.hide()

    esto lo probe en codigo vb.net vs2008 y funciona...

    a estos formularios los cierro desde un formulario form1...... 


    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    viernes, 5 de marzo de 2010 23:51
  • Hola la forma que tienes para cerrar el formulario es la siguiente:

    - Si lo haces desde el propio formulario tienes que poner me.close()

    - Si lo tienes que hacer desde otro formulario:
       - Si tienes una instancia: nombredelaInstancia.Close()
       - Si no lo tienes instanciado: nombredelFormulario.Close()

    Un saludo.

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    sábado, 6 de marzo de 2010 7:12
    Moderador

  • Este codigo pertenece a un boton de guardado de un formulario, el 5, he probado a meter el codigo que me habeis dicho entre  todos para cerrar el formulario 2, y aun asi no se cierra 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Validate()
            Me.PartidospoliticosBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.PoliticaDataSet)
            MsgBox("El partido se agregó correctamente")
            Form2.Close()
        End Sub
    sábado, 6 de marzo de 2010 11:47
  • Hola, el formulario 2 lo tienes instanciado desde algun sitio, o para abrirlo unicamente pusiste form2.show??


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    sábado, 6 de marzo de 2010 11:49
    Moderador
  • lo de instanciado no se lo que es,pero si,para abrirlo puse form2.show
    sábado, 6 de marzo de 2010 11:57
  • Podrias poner el trozo de codigo donde haces el show?
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    sábado, 6 de marzo de 2010 12:45
    Moderador
  • te refieres al formulario desde el que lanzo el formulario 2 no,si es este:

    Public Class Politicator

        Private Sub InsertarPartidoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertarPartidoToolStripMenuItem.Click
            Dim F2 As New Form2
            F2.Show()




        End Sub

        Private Sub Politicator_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub

        Private Sub InsertarPolíticosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertarPolíticosToolStripMenuItem.Click
            Dim F3 As New Form3
            F3.Show()



        End Sub

        Private Sub InsertarPropuestasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertarPropuestasToolStripMenuItem.Click
            Dim F4 As New Form4
            F4.Show()
        End Sub

        Private Sub AcercaDeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
          
        End Sub

        Private Sub AcercaDeToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AcercaDeToolStripMenuItem.Click
            AboutBox1.Show()


        End Sub

        Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem.Click
            Dim D1 As New Dialog1
            Dialog1.Show()
        End Sub

        Private Sub Navigatator3000ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Navigatator3000ToolStripMenuItem.Click


            Dim F15 As New Form15
            Form15.Show()

        End Sub

        Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
            Dim f2 As New Form2
            Form2.Close()
        End Sub

    End Class


    muchas gracias por estar ayudandome
    sábado, 6 de marzo de 2010 12:53
  • Vale,      Dim F2 As New Form2  eso significar tener una instancia de Form2 por lo que la aplicacion no te cierra el formulario.

    por otro lado indicarte que como la declaracion de F2 la tienes a nivel de un metodo,para cerrarlo podrias hacer lo siguiente:

    for each frm as Form in Application.OpenForms
    if frm.Name="F2" then
       frm.close()
       exit for
    end if

    next

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Marcado como respuesta davsol sábado, 6 de marzo de 2010 15:24
    sábado, 6 de marzo de 2010 12:58
    Moderador
  • entonces tengo que cambiar lo que yo tenía en el formulario 1 por eso que me has dicho no??
    sábado, 6 de marzo de 2010 13:00
  • Claro, sustitye lo que tenias tu por lo que te he puesto.

    Tendrias otra forma de hacerlo que seria declarar tu F2 (form2) a nivel de clase o de aplicacion y podrias hacer F2.Close() desde donde quieras....

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Marcado como respuesta davsol sábado, 6 de marzo de 2010 15:24
    sábado, 6 de marzo de 2010 14:23
    Moderador
  • y como lo declaro  a nivel de aplicacion??,que eso de cerrarlo desde donde yo quiera es lo que necesito 
    sábado, 6 de marzo de 2010 14:30
  • Puedes tener un objeto de tipo modulo(boton derecho sobre tu proyecto, agregar, modulo) y dentro de ese objeto, declaras tu formulario de la siguiente manera:

    public F2 as new Form2

    y ya podras cerrar tu formulario desde donde quieras.

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    sábado, 6 de marzo de 2010 15:06
    Moderador
  • Bueno,muchas gracias por todo,al final lo he conseguido con esto que me dijiste por que lo de los modulos lo veo  complicado:

    for each frm as Form in Application.OpenForms
    if frm.Name="F2" then
       frm.close()
       exit for
    end if

    next

    A partir de ahora declarare esto para abrir cualquier formulario 
    sábado, 6 de marzo de 2010 15:23