Visual Basic.NET - Pasar valor del formulario padre al hijo

   
Vista:

Pasar valor del formulario padre al hijo

Publicado por Inma (3 intervenciones) el 04/08/2011 19:35:54
Visual Basic .Net
Hola, tengo dos formulario FormPadre y FormHijo

********Código del FormularioPadre*************

Public Class FormPadre
Private xResultado As string

Public WriteOnly Property Resultado() As string
Set(ByVal value As string)
xResultado = value
End Set
End Property

Private Sub TlbBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TlbBuscar.Click

With FormHijo
.FormularioPadre = Me
.ShowDialog()
If CCadena(xResultado) <> "" Then
TxtCodigo.Text = CLong(xResultado)
End If
End Sub
End Class

**********Codigo del Formulario Hijo**************

Public Class FormHijo

Private xFormularioPadre As Form

Public WriteOnly Property FormularioPadre() As Form
Set(ByVal value As Form)
xFormularioPadre = value
End Set
End Property

Private Sub Salir()
Dim Clave as string
Clave="123"

'La siguiente línea me da error, me dice: "'resultado' no es un miembro de 'System.Windows.Forms.Form'"
'xFormularioPadre.resultado = clave


'Esta línea si me funciona correctamente.
FormPadre.Resultado = Clave

Me.Dispose()
End Sub

El problema que tengo es que el formulario hijo puede ser llamado desde formularios distintos y por tanto necesito cambiar el valor de la propiedad resultado desde la variable xFormulariopadre y no desde el formulario 'FormPadre'

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pasar valor del formulario padre al hijo

Publicado por Damian (824 intervenciones) el 05/08/2011 14:44:10
No comprendo porque pones la linea: Private xFormularioPadre As Form
Que es Form?.

De todas formas debe ir asi: Dim xFormularioPadre As New FormPadre
Ya que FormPadre es el nombre de la clase de tu formulario padre y se pone el operador New ya que hay que instanciarlo y asi toma las propiedades de esa clase.
Y después llamas a su miembro:

xFormularioPadre.Resultado=value
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar valor del formulario padre al hijo

Publicado por Inma (3 intervenciones) el 08/08/2011 09:16:46
Private xFormularioPadre as Form en principio lo declaro como un formulario genérico en el formulario hijo porque el hijo al crear el código del formulario hijo no se cual el es formulario padre que va a tener ya que pueden ser varios.

Posteriormente mediante la siguiente propiedad le indico cual es el formulario padre:

Public WriteOnly Property FormularioPadre() As Form
Set(ByVal value As Form)
xFormularioPadre = value
End Set
End Property

Pero al poner xFormularioPadre.Resultado=value me da un error 'Resultado' no es un miembro de 'System.Windows.Forms.Form'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar valor del formulario padre al hijo

Publicado por Inma (3 intervenciones) el 28/08/2011 12:16:21
Ya tengo la solución.

Lo que pasaba es que cuando declaraba el Dim xformulariopadre as form, lo estaba declarandolo como form basicamente y no como formpadre. Para que se convierta en el formulario que deseado y sea mas versatil, solo había que declararlo como objetc

Dim xFormularioPadre As Object

Ejemplo del formulario hijo modificado, (el formulario padre se queda igual):


Private xFormularioPadre As Object

Public WriteOnly Property FormularioPadre() As Object
Set(ByVal value As Object)
xFormularioPadre = value
End Set
End Property

Private Sub Salir()
Dim Clave as string
Clave="123"

'Ahora si que funciona la siguiente sentencia
xFormularioPadre.resultado = clave


Me.Dispose()
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar