Actualizar Formulario desde otro formulario

23/02/2006 - 20:40 por Mocoyn | Informe spam
Hola, uso visual basic .NET 2003, y quiero actualizar una barra de estado y 2
datagrids de un formulario (1) ya abierto, desde otro formulario (2). He
probado creando instancias de esta manera, con este codigo:
Private Shared mDefInstance As MDIPrincipal
Public Shared Property DefInstance() As MDIPrincipal
Get
If mDefInstance Is Nothing Then
mDefInstance = New MDIPrincipal
End If
Return mDefInstance
End Get
Set(ByVal Value As MDIPrincipal)
mDefInstance = Value
End Set
End Property

Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)
MyBase.OnClosed(e)
mDefInstance = Nothing
End Sub


y cuando accedo desde el formulario (2) al formulario (1), consigo verlo
poniendo, formulario.definstance.barra_estado pero no consigo que se
actualice.
Para el caso de los datagrids, uso unas funciones que los cargan. Espero su
ayuda, grcias.
 

Leer las respuestas

#1 Jesús López
24/02/2006 - 12:19 | Informe spam
¿Y donde tienes ese código?

Este es un problema típico de alcance (scope). Desde el formulario que
quieres acceder al otro formulario tienes que poder tener acceso a una
variable que haga referencia a la instancia del formulario.

Si en un punto del programa creas el formulario con una variable local. Como
las variables locales sólo son accesibles desde el metodo que las declaras,
no abrá manera que acceder de nuevo a ella

Por ejemplo, si haces así:

Sub CrearFormulario()
Dim frm As New Form1()
frm.Show()
End Sub

La referencia al formulario frm, se habrá perdido para siempre y no podrás
acceder al formulario.

Cuando creas el formulario tienes que guardar la referencia en algún sitio
que esté accesible.


Probablemente, lo que esé ocurriendo es que la aplicación crea una instancia
del formulario principal al comienzo de la aplicación. Y cuando accedes a
Formulario.DefIntance se está creando un nuevo formulario y estás accediendo
a una instancia diferente, por eso no se actualiza

Saludos:

Jesús López
MVP VB
Solid Quality Learning
www.solidqualitylearning.com



"Mocoyn" wrote:

Hola, uso visual basic .NET 2003, y quiero actualizar una barra de estado y 2
datagrids de un formulario (1) ya abierto, desde otro formulario (2). He
probado creando instancias de esta manera, con este codigo:
Private Shared mDefInstance As MDIPrincipal
Public Shared Property DefInstance() As MDIPrincipal
Get
If mDefInstance Is Nothing Then
mDefInstance = New MDIPrincipal
End If
Return mDefInstance
End Get
Set(ByVal Value As MDIPrincipal)
mDefInstance = Value
End Set
End Property

Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)
MyBase.OnClosed(e)
mDefInstance = Nothing
End Sub


y cuando accedo desde el formulario (2) al formulario (1), consigo verlo
poniendo, formulario.definstance.barra_estado pero no consigo que se
actualice.
Para el caso de los datagrids, uso unas funciones que los cargan. Espero su
ayuda, grcias.

Preguntas similares