Abrir Formulario

24/04/2006 - 14:06 por Squiur | Informe spam
Saludos

Como puedo hacer para que no se me abrar varias ventanas de un mismo
formulario, es es decir cuando hago click en el menu que abre el formulario
quiero que muestre el que ya abrió anteriormente y que no que abra uno
nuevo "IGUAL"

Dim inicio As New frmValidacion
inicio.MdiParent = Me
inicio.Show()

Preguntas similare

Leer las respuestas

#1 Angel. E. Ruiz. P
24/04/2006 - 15:10 | Informe spam
Amigo usa Singleton: Asegura que solo se cree una instancia de la clase y
provee un punto global de acceso a esta.
Aui tienes un ejemplo:

http://www.codeproject.com/vb/net/S..._Forms.asp
Saludos cordiales,
Ángel Ruiz
MCP C#
MVP de Visual Basic desde 2004
Caracas - Venezuela
"El conocimiento es un bien, que crece a medida que se comparte"
"Squiur" <matdas_arroba_matesi.com.ve> escribió en el mensaje
news:
Saludos

Como puedo hacer para que no se me abrar varias ventanas de un mismo
formulario, es es decir cuando hago click en el menu que abre el
formulario
quiero que muestre el que ya abrió anteriormente y que no que abra uno
nuevo "IGUAL"

Dim inicio As New frmValidacion
inicio.MdiParent = Me
inicio.Show()
Respuesta Responder a este mensaje
#2 Alberto Poblacion
24/04/2006 - 15:13 | Informe spam
"Squiur" <matdas_arroba_matesi.com.ve> wrote in message
news:
Como puedo hacer para que no se me abrar varias ventanas de un mismo
formulario, es es decir cuando hago click en el menu que abre el
formulario
quiero que muestre el que ya abrió anteriormente y que no que abra uno
nuevo "IGUAL"

Dim inicio As New frmValidacion
inicio.MdiParent = Me
inicio.Show()



Una posible forma de hacerlo consiste en buscar el formulario en la
colección de hijos, y si ya existe activarlo en lugar de crear uno nuevo:

Dim f as Form
Dim encontrado as Boolean=False
For Each f in Me.MdiChildren
If TypeOf f is frmValidacion Then
f.Activate()
encontrado=True
Exit For
End If
Next f
If Not encontrado
Dim inicio As New frmValidacion
inicio.MdiParent = Me
inicio.Show()
End If
Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
24/04/2006 - 15:24 | Informe spam
Hola Squiur

Prueba a instanciar el formulario hijo en el evento de carga del formulario
mdi, y lo mantienes oculto hasta que lo necesites. Cuando vayas a cerrar el
hijo, en el evento Closing cancelas el cierre y lo que haces realmente es
ocultarlo, de esa forma cuando vuelvas a pedir de nuevo el formulario hijo,
lo que haces es mostrarlo y no crearlo.

Te adjunto un bloque de código de ejemplo:

'///////////////////////////////////
' este es el código del formulario padre-mdi
Public Class Form1
Inherits System.Windows.Forms.Form

Private oFrmHijo As frmHijo


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
' aquí instanciamos el formulario hijo y lo asignamos al mdi
oFrmHijo = New frmHijo
oFrmHijo.MdiParent = Me
End Sub

' cada vez que pulsemos este botón, mostramos el formulario hijo,
' fíjate que no lo creamos nuevo sino que ya lo teníamos creado
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
oFrmHijo.Show()
End Sub
End Class

' este es el código del formulario hijo
Public Class frmHijo
Inherits System.Windows.Forms.Form

' si el usuario pulsa el botón de cierre del formulario, nosotros
' lo que realmente hacemos es ocultarlo y no destruir el objeto formulario
' de esa manera mantenemos el mismo objeto creado y lo que hacemos después
' es recuperarlo mostrándolo
Private Sub frmHijo_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
e.Cancel = True
Me.Hide()
End Sub
End Class
'///////////////////////////////////

Espero que te sirva de ayuda
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Squiur" wrote:

Saludos

Como puedo hacer para que no se me abrar varias ventanas de un mismo
formulario, es es decir cuando hago click en el menu que abre el formulario
quiero que muestre el que ya abrió anteriormente y que no que abra uno
nuevo "IGUAL"

Dim inicio As New frmValidacion
inicio.MdiParent = Me
inicio.Show()

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida