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