Principales respuestas
saber si un formulario esta abierto y cerrarlo desde otro

Pregunta
-
buenos días
tengo una aplicacion visual net winforms.
desde un formulario llamo a otro (no modal) lo que quiero es saber si se le vuelve a llamar al mismo formulario, como puedo saber si esta abierto y en ese caso cerrarlo para volver a cargarlo con los nuevos datos
son dos forms que conviven en pantalla a la vez (pero claro solo una instancia del form)
gracias
Aran
Respuestas
-
Lo que te puse ahí es por si hay un form previamente abierto, el se cierra, lo que evita es que hayan multiples forms abiertos simultáneamente. Eso fue lo que entendí que querías.
Asi te sale.
Asi deberías ponerlo luego.
- Marcado como respuesta Óscar NavarroModerator viernes, 26 de junio de 2020 16:57
-
bueno entre todas las respuestas lo he conseguido solucionar
en concreto mucho mas fácil de lo parecía
lo copio por si sirve:
For Each f As Form In Application.OpenForms If Not f.InvokeRequired Then If f.Name = "frmTareasPreventivo" Then f.Close() Exit For End If End If Next
Aran
- Marcado como respuesta aticnet sábado, 20 de junio de 2020 9:31
Todas las respuestas
-
Hola aticnet
Puedes intentar esto:
En las propiedades del proyecto, hay una configuración llamada "Modo de apagado", configúrelo en "Cuando se cierra el último formulario".
y también revisa estos enlaces
Abrir nuevo form cerrando el antiguo VB
Codigo VB para cerrar form si esta abierto
-
perdona no entiendo nada
yo tengo el código que pego a continuación para lanzar el nuevo form frmTareasPreventivo pero antes debo saber si ya hay una instancia del mismo abierta para poder cerrarla y volver a lanzarlo con los nuevos parametros
Dim Mnu As New frmTareasPreventivo(cl, Turno, txtOperario.Text) With Mnu .StartPosition = FormStartPosition.CenterScreen .Tag = "" .Show() End With Mnu = Nothing
no entiendo que tiene que ver con lo que citas:
En las propiedades del proyecto, hay una configuración llamada "Modo de apagado", configúrelo en "Cuando se cierra el último formulario".
Podrias ponerme el código de ejemplo por favor?
- Editado aticnet viernes, 19 de junio de 2020 14:19 falta información
-
Lo que te puse ahí es por si hay un form previamente abierto, el se cierra, lo que evita es que hayan multiples forms abiertos simultáneamente. Eso fue lo que entendí que querías.
Asi te sale.
Asi deberías ponerlo luego.
- Marcado como respuesta Óscar NavarroModerator viernes, 26 de junio de 2020 16:57
-
Hola para saber si un formulario está abierto debes preguntar en el objeto Application algo así
Imports System.Linq If Application.OpenForms().OfType(Of Form2).Any Then MessageBox.Show("Opened") Else Dim f2 As New Form2 f2.Text = "form2" f2.Show() End If
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Propuesto como respuesta J. Carlos Herrero sábado, 20 de junio de 2020 6:03
-
gracias
el imports system.linq me da error me dice que no contiene ningun miembro publico
entonces al poner Application.openforms ... me dice que no es un miembro de mi aplicacion
Ademas
si esta abierto lo que quiero es cerrarlo para volver a abrirlo con nuevos parametros
como lo cierro desde el otro formulario?
Aran
-
bueno entre todas las respuestas lo he conseguido solucionar
en concreto mucho mas fácil de lo parecía
lo copio por si sirve:
For Each f As Form In Application.OpenForms If Not f.InvokeRequired Then If f.Name = "frmTareasPreventivo" Then f.Close() Exit For End If End If Next
Aran
- Marcado como respuesta aticnet sábado, 20 de junio de 2020 9:31
-
Hola:> el imports system.linq me da error <¿Tan viejo es tu Visual Studio?
Me parece que con VS2008 ya funcionaba LinQ> si esta abierto lo que quiero es cerrarlo para volver a abrirlo con nuevos parametros como lo cierro desde el otro formulario ?<Para abrir un formulario
moHijo = New FrmHijo
moHijo.Show()para cerrarlomoHijo.Close()
Un saludo desde Bilbo
Carlos