Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2007, 17:08
valeria_rocha
 
Fecha de Ingreso: octubre-2006
Mensajes: 10
Antigüedad: 18 años, 1 mes
Puntos: 0
Modificar propiedad de formulario instanciado desde otro formulario

Buenas tardes:

Tengo un formulario Form1 el cual manda llamar mediante Show() a Form2, para esto hago lo siguiente (como comunmente se hace)

Dim MyForm2 as Form2
MyForm2 = New Form2
MyForm2.InstanceRef = Me '<-- propiedad publica tipo Form
' en Form2 que guarda
' la instancia de Form1 porque NO quiero
' cerrarla
MyForm2.StatusCaptura = "01" '<-- valor que utilizo en procesos de Form2
Me.Hide
MyForm2.Show

En este momento tengo "vivas" las dos instancias de mis dos formularios. Mientras trabajo en Form2, modifico la propiedad tipo string SatusCaptura y ahora tiene "02" (cuando inició Form2 tenía "01"). Hecho esto debo regresar a la instancia viva de Form1 y cerrar Form2, lo cual es posible gracias a la propiedad InstanceRef, lo hago así:

Me.Close
Me.Dispose

Me.InstanceRef.Show() '<-- así regreso a la instancia "viva" de Form1

Aquí el problema es, Form1 también tiene la propiedad StatusCaptura y lo que quiero es que al cerrarse Form2 me regrese el valor de SU propiedad StatusCaptura que tiene "02" y se modifique la propiedad en Form1, pero sin volver a instanciar Form1, pues aun está viva la primera instancia. Sé que es posible hacerlo así desde Form2:

Dim MyForm1 as Form1
MyForm1 = New Form1
MyForm1.StatusCaptura = Me.StatusCaptura

pero no quiero instanciar otra vez Form1, pues la primera instancia tiene valores que no quiero perder, lo cual sucedería si utilizo otra instancia. También sé que puedo usar variables globales en un módulo pero eso no es elegante hacerlo ni encaja en el paradigma de la orientación a objetos, aunque es una solución rápida y fácil, pero prefiero evitarlo. En fin, no sé si se pueda hacer esto que quiero, espero me puedan orientar al respecto. Gracias y saludos a todos