Como controlar formulario con MDI

15/09/2005 - 10:47 por Tecnicos Aydai | Informe spam
Hola a todos!!!!
Os comento mi duda.
Tengo un formulario MDI, en el cual se cargan distintos tipos de formularios
hijos, pero solo puede haber una instancia de cada uno de estos hijos, y me
gustaria saber como puedo controlar que solo se cargue una instancia de cada
uno de los hijos.

Un saludo y gracias.

Preguntas similare

Leer las respuestas

#1 Don Quijote de Nicaragua
15/09/2005 - 15:52 | Informe spam
Yo hice algo también de esta forma:
Llamar al formulario desde el Menú

Private Sub mnuAutomotor_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnuAutomotor.Click
'Comprueba si el formulario ya está Cargado
If Not udfComprobarMDI("FrmAutomotor", Me) Then
'Abre el formulario solicitado
Dim Form As New FrmAutomotor
Form.Icon = Me.Icon
Form.MdiParent = Me
Form.Show()
Form = Nothing
End If
End Sub

' Función que verifica si el formulario MDI ya se encuentra cargado,
declarado en un Modulo
Friend Function udfComprobarMDI(ByVal strTitulo As String, ByVal frm As
FrmPrincipal) As Boolean
Dim x As Integer
For x = 0 To (frm.MdiChildren.Length) - 1
If frm.MdiChildren(x).Name = strTitulo Then
udfComprobarMDI = True
Exit Function
Else
udfComprobarMDI = False
Exit Function
End If
Next x
udfComprobarMDI = False
End Function

Espero te sirva,
Saludos.
Don Quijote de Nicaragua
Elder Soto.

"J. Carlos Herrrero" escribió en el mensaje
news:u2IXe$
Mostrar la cita
#2 Miguel E.
15/09/2005 - 16:19 | Informe spam
Tambien podrias implementar un patron singleto que en realidad es muy
sencillo, y que tus formularios hereden de este. Tan solo tienes que ponerle
una variable Shared (estática)booleana por ejemplo iniciallizada a false y
en el constructor comprobar el valor de ésta, si es false no se ha creado
formulario y si es true pues no creas el objeto.

Espero te sirva
"A.Poblacion" escribió en
el mensaje news:
Mostrar la cita
#3 Miko_tnt
15/09/2005 - 17:37 | Informe spam
Hola esto te va a servir...

lo ejecutas en el evento que va abrir tu formulario hijo .. o komo te
dijeron anteriormentepuedes manejar una variable booleana en el evento enter
de tu formulario.. pero lo de abajo te debe solucionar el problema


Try
Dim NombreForm As String = "Tu Forma"
Dim x As Integer
For x = 0 To (Me.MdiChildren.Length) - 1
If Me.MdiChildren(x).Name = NombreForm Then
Me.MdiChildren(x).Focus()
Exit Sub
End If
Next x

Dim Forma As New TuFormulario()
Forma .MdiParent = Me
Forma .Name = NombreForm
Forma .Show()
Catch ex As Exception
MsgBox(ex.Message)
End Try

suerte con tu proyecto .. kualkier cosa vuelve a escribir pero esto te
funcionara

"Tecnicos Aydai" escribió:

Mostrar la cita
#4 J. Carlos Herrrero
15/09/2005 - 20:08 | Informe spam
Hola:
Prueba esto
En el MDI:
Private Sub mnuXXXX_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnuXXXX.Click
Me.mnuXXXX.Enabled = False
Dim lofrmXXXX As New frmXXXX
lofrmXXXX.MdiParent = Me
lofrmXXXX.Show()
End Sub
En el frmXXXX:
Private Sub frmXXXX_Closed(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Closed
'utilizando la funcion CType(), moldeamos la propiedad MdiParent
'del formulario al tipo correspondiente a la clase del formulario MDI
'con ello tenemos acceso a sus miembros y en particular a la opcion de
menu
CType(Me.MdiParent, frmMDI).mnuXXXX.Enabled = True
End Sub

Espero que te sirva
Un saludo desde Bilbo:
Carlos

"Tecnicos Aydai" escribió en el mensaje
news:u%
Mostrar la cita
#5 Tecnicos Aydai
16/09/2005 - 09:05 | Informe spam
Muchas gracias a todos, me habeis dado ideas que me han sido de gran
utilidad.
"Tecnicos Aydai" escribió en el mensaje
news:u%
Mostrar la cita
Ads by Google
Search Busqueda sugerida