Manejo de MDI childrens en VB.NETComunicacion e Instancias
Fecha: 20/May/2006 (17-05-06)
|
El manejo de ventanas ha cambiado mucho desde la versión 6.0 de visual basic, en ese entonces se tenia una referencia directa a las ventanas como objetos instanciados, pero en .NEt esto ha cambiado y aunque algunos no estén de acuerdo yo creo que para mejor.
Sin embargo hay maneras de obtener una funcionalidad similar en el manejo de ventanas, en esta ocasión veremos estos principios orientados al manejo de formularios MDI.
Como sabemos las aplicaciones MDI consisten de un formulario Padre dentro el cual se despliegan las demás ventanas llamadas HIjas.
Un problema común con el que nos encontramos a veces con formularios MDI es el no poder saber si los formularios hijos ya se crearon o no, y en el caso de estar creados como pasarles un mensaje o hacer referencia a objetos dentro de estos. Además esta solución viene útil cuando se necesita que un formulario hijo se comunique con otro formulario hijo. Y para controlar que no haya formularios hijos repetidos si es que eso deseamos. Bueno la manera de implementación es la siguiente:
Primer Paso - Modulo compartido:
Como primer paso debe crear un modulo en el cual declare los objetos de los formularios a usar, por ejemplo:
Module ventanas Public abmacactivo As abmacactivo Public abmacaseguradora As abmacaseguradora Public abmacnumeracion As abmacnumeracion Public abmacseguro As abmacseguro End ModuleEn esta caso tendriamos cuatro ventanas que deseamos controlar.
Segundo Paso - Afinar las ventanas Hijas:
Para poder controlar si los forms están creados o no es necesario que cuando sean destruidos los objetos su instancia pase a ser nothing, esto lo logramos asignando nothing al objeto formulario en su evento Closing. El siguiente es un código de ejemplo del formulario abmactivo.
Private Sub abmacactivo_Closing(ByVal sender As Object, _ ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing ventanas.abmacactivo.Dispose() ventanas.abmacactivo = Nothing End SubTercer Paso - Como abrir los formularios:
Cuando se desee abrir uno de estos formularios se lo debe hacer tomando en cuenta el objeto declarado en el modulo de ventanas, el siguiente ejemplo es para abrir el formulario abmacactivo desde el formulario principal:
If ventanas.abmacactivo Is Nothing Then ventanas.abmacactivo = New abmacactivo ventanas.abmacactivo.MdiParent = Me End If ventanas.abmacactivo.Show() ventanas.abmacactivo.BringToFront ()Aplicaciones - Para que sirve?:
Utilizando esta técnica logramos: - Que solo se cree una instancia de cada formulario controlado. Si es que el formulario ha sido creado anteriormente solo se traerá al frente. - Podemos referirnos directamente a cualquier formulario o sus objetos públicos, desde el formulario Principal, pero también desde otro formulario hijo, utilizando la forma siguiente:
Referencia directa a el formulario abmacactivo:
ventanas.abmactivo
Referencia directa a un entero declarado publico en el formulario abmacactivo:
ventanas.abmactivo.NroCompartido
Eso me permite tener comunicación total con mis formularios hijos, Y entre formulario hijos también. Espero que la presente entrega les sirva para sus desarrollos futuros.
Atte Mario Alejandro Loza Armand Ugon - [email protected]
Espacios de nombres usados en el código de este artículo:
System.windows.Forms