Pregunta: | 50684 - INSTANCIAR SOLO UNA VEZ UN FORMULARIO HIJO |
Autor: | Nicolas Tenca |
Hola. Como puedo hacer para que un formulario hijo sea llamado solo una vez desde un formulario padre dentro de una aplicacion MDI. Averigue una forma pero lo tengo que hacer en cada formulario hijo, estaria bueno que esto no sea asi.
Muchas gracias por su ayuda! |
Respuesta: | Jose ramirez |
'l asiguiente linea por si estas dentro de un mdi
My.Forms.frmckColor.MdiParent = Me My.Forms.frmckColor.Show() My.Forms.frmckColor.Focus() donde frmckColor es el nombre de tu formulario |
Respuesta: | Nicolas Tenca |
Ya encontre la solucion. Es sencilla y creo que efectiva a lo que yo ando buscando:
En el formulario padre cuando hago la llamada al hijo puse este codigo Dim agregar As New FrmAgregarSocios If Me.MdiChildren.Length <> 0 Then For x As Integer = 0 To Me.MdiChildren.Length - 1 If Me.MdiChildren(x).Text = agregar.Text Then Me.MdiChildren(x).Focus() agregar.Dispose() Exit Sub End If Next End If agregar.MdiParent = Me agregar.Show() Utilizo la coleccion mdichildren que acumula los formularios hijos instanciados. La comparacion la hice con la propiedad .text pero puede ser cualquier otra. |
Respuesta: | Javier Suero |
Hola Nicolás,
creo que veo la solución, a ver si soy capaz de explicarme. Es la técnica singleton pero en colección Crea un colección de formularios static(shared). Si te piden un formulario del tipo hijo concreto compruebas que no lo tienes en la colección, si lo tienes devuelves ese, si no lo creas, lo incluyes en la colección y lo devuelves. Acuérdate de que cuando el formulario hijo concreto se cierre tiene que quitarse de la colección estática del padre. Algo así. Un saludo, Javier. |