Duda al implementar una interface
Publicado por María Inés Burgos (49 intervenciones) el 25/01/2019 03:45:09
Buenos días! He implementado interfaces para pasar datos entre form con éxito hasta que me topé con un problema que no sé resolver.
Paso a describir lo que sucede. Necesito pasar datos de un form hijo a un form padre, esto lo he logrado en otras oportunidades pero este caso es especial porque este form "padre" en verdad está abierto y contenido dentro de un panel al cual llamo "panelcontenedor" que está dentro del formulario de inicio de la aplicación. Dicho form "padre" lo abro con la siguiente función (que es lo que hace que la interface no funcione y no sabría modificarlo):
Entonces el form padre se abre desde un botón que usa esa función (en el formulario principal de la aplicación):
Bien ahora yo necesito pasar datos de un form hijo que se abre a partir de este form padre dentro del panel contenedor. Y me aparecen problemas al vincularlos (el error de que no se puede convertir un objeto de la interface a un objeto del form de inicio)
Paso a detallar el código de la interface
El código que está en el form padre
Botón que abre el form hijo
Código del botón en el form Hijo
En conclusión, me doy cuenta que el problema es la manera en que se abre el formulario padre desde este formulario inicial que tiene el panel contenedor, pero no me doy cuenta cómo arreglarlo. Recién estoy aprendiendo y he "hecho agua".
Desde ya muchas gracias por leerme y si me pueden orientar cómo puedo resolverlo les estaría agradecida.
Un abrazo!
Paso a describir lo que sucede. Necesito pasar datos de un form hijo a un form padre, esto lo he logrado en otras oportunidades pero este caso es especial porque este form "padre" en verdad está abierto y contenido dentro de un panel al cual llamo "panelcontenedor" que está dentro del formulario de inicio de la aplicación. Dicho form "padre" lo abro con la siguiente función (que es lo que hace que la interface no funcione y no sabría modificarlo):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'Abrir formularios internos dentro del panel contenedor
Private Sub AbrirFormInPanel(Of Forms As {Form, New})()
Dim formulario As Form
formulario = Panelcontenedor.Controls.OfType(Of Forms)().FirstOrDefault()
If formulario Is Nothing Then
formulario = New Forms()
formulario.TopLevel = False
formulario.FormBorderStyle = FormBorderStyle.None
formulario.Dock = DockStyle.Fill
Panelcontenedor.Controls.Add(formulario)
Panelcontenedor.Tag = formulario
formulario.Show()
formulario.BringToFront()
Else
formulario.BringToFront()
End If
End Sub
Entonces el form padre se abre desde un botón que usa esa función (en el formulario principal de la aplicación):
1
2
3
Private Sub Btn_Click(sender As Object, e As EventArgs) Handles Btn.Click
AbrirFormInPanel(Of Frm_Padre)()
End Sub
Bien ahora yo necesito pasar datos de un form hijo que se abre a partir de este form padre dentro del panel contenedor. Y me aparecen problemas al vincularlos (el error de que no se puede convertir un objeto de la interface a un objeto del form de inicio)
Paso a detallar el código de la interface
1
2
3
Interface IForm
Sub PasarDatos(ByVal Id As String, ByVal Concepto As String)
End Interface
El código que está en el form padre
1
2
3
4
5
Implements IForm
Public Sub PasarDatos(Id As String, Concepto As String) Implements IForm.PasarDatos
TEX_Id.Text = Id
TEX_Concepto.Text = Concepto
End Sub
Botón que abre el form hijo
1
2
3
4
Dim formAdd As New Frm_Hijo()
formAdd.TEX_Codigo.Text = TEX_Codigo.Text
AddHandler formAdd.FormClosing, New FormClosingEventHandler(AddressOf Frm_Hijo_FormClosing) 'esto maneja un evento cuando cierra el form
formAdd.Show(Me)
Código del botón en el form Hijo
1
2
3
4
Dim _formInterface As IForm = CType(Me.Owner, IForm)
_formInterface.PasarDatos(TEX_Id.Text, TEX_Concepto.Text)
Me.DialogResult = DialogResult.OK 'esto es para el evento de cierre del form
Me.Close()
En conclusión, me doy cuenta que el problema es la manera en que se abre el formulario padre desde este formulario inicial que tiene el panel contenedor, pero no me doy cuenta cómo arreglarlo. Recién estoy aprendiendo y he "hecho agua".
Desde ya muchas gracias por leerme y si me pueden orientar cómo puedo resolverlo les estaría agradecida.
Un abrazo!
Valora esta pregunta


0