Visual Basic.NET - Duda al implementar una interface

 
Vista:
sin imagen de perfil
Val: 80
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

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):

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 2.120
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por Phil Rob (508 intervenciones) el 25/01/2019 19:26:33
Hola,

Tu trabajo parece muy complejo.

¿Solo es necesario procesar 2 TextBox?
Si es así, entonces puedo hacer un modelo simple.
Y creo que una clase Interface no es necesario, salvo razones que desconozco ...

Aquí son las 19:30 ', no puedo programar mucho hoy pero mañana sí

Hasta pronto,
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
sin imagen de perfil
Val: 80
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por María Inés Burgos (49 intervenciones) el 25/01/2019 20:23:35
Muchas gracias Phil Rob! Sí, es casi seguro que me embrollé y existe una mejor manera de hacerlo. Estaré encantada de ver tu sugerencia y seguir aprendiendo.
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.325
Plata
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por Wilfredo Patricio Castillo (621 intervenciones) el 26/01/2019 01:58:46
Mucha vuelta para algo super sencillo.

Primero decirte que si solo son esos 2 valores que vas a retornar hacia el padre, puedes hacerlo de 2 maneras o formas.

1.- Usando delegados, que yo lo haría con delegados.
2.- Declarando esas 2 propiedades (públicas) en el formulario padre y mostrar el formulario hijo como modal, capturas los datos, pasas al padre y cierras el modal y listo con lo cual no habría tanta vuelta.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por María Inés (49 intervenciones) el 26/01/2019 12:14:33
Muchas gracias Wilfredo! Sí, leí por ahí que era la manera de hacerlo y lo implementé, pero el que no sabe es como el que no ve, entonces no reparé en otra posibilidad. Muchas gracias! voy a estudiar sobre las sugerencias que me han dado y lo haré mejor
Un abrazo!
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
Imágen de perfil de Phil Rob
Val: 2.120
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por Phil Rob (508 intervenciones) el 26/01/2019 09:39:20
Hola,

En el archivo agregado (ComunicacionEntreFormsTmp.zip), encontrará los usos de varios métodos.
Si eso corresponde a lo que quieres hacer, completaré el ejemplo y agregaré más métodos (¿Qué versión de VisualStudio usas?).

Aquí, FPrincipal y FMostar intercambian datos, FPrincipal y FInTroducir también, todos por diferentes métodos.
Atención, los Form existen en la solución (cf. ilustración).

Nota sobre la clase de interfaz : La "clase Interface" es un tipo de clase cuyo uso no tiene nada que ver con la Interfaz Hombre-Máquina (IHM). Por eso creo que esto no te ayuda.

Hasta pronto,

MultiForm1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 2.120
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por Phil Rob (508 intervenciones) el 26/01/2019 11:13:54
Continuación ...

En el archivo agregado (InputBox.zip), este es un InputBox aparentemente idéntico al propuesto anteriormente en VB 6.
Los datos entran por los parámetros del constructor NEW y el resultado está a disposición del código solicitante en una Property.

Buena lectura ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por María Inés (49 intervenciones) el 01/02/2019 12:59:18
Buen día Phil Rob! Disculpa la demora en analizar lo que me habías mandado, pero no soy programadora entonces voy haciéndolo y aprendiendo en los "ratos libres" y quería ver y aprovechar todo antes de responderte. Millón de gracias! He aprendido mucho! Muy generoso y amable de tu parte tomarte la molestia de ayudarme

PD: Edité para avisarte que ya está funcionando y que tengas lindo día! Saludos!
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
Imágen de perfil de Phil Rob
Val: 2.120
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por Phil Rob (508 intervenciones) el 01/02/2019 13:38:27
Hola,

Ja, muy feliz de haber sido útil ...

Para completar su información, aquí está el ejemplo completo (con el formulario FVerificar), es el archivo adjuntado ComunicacionEntreForms.zip. Este archivo también contiene el archivo ComunicacionEntreForms.pdf que compara los varios métodos de comunicación en las aplicaciones ComunicacionEntreForms y InputBox.

Buena lectura ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por María Inés (49 intervenciones) el 01/02/2019 14:16:56
Nuevamente! Muchas gracias!!! Me lo guardo para la lectura nocturna Se aprende mucho en estos foros gracias a la generosidad de sus usuarios y la paciencia que nos tienen a los neófitos jaja! Siempre intento evacuar mis dudas, pero cuando uno no sabe, entra en espirales que no puede resolver y ahí, es hora de consultar! Muchas gracias por todo Un abrazo grande!
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
Imágen de perfil de zuly
Val: 5
Ha disminuido su posición en 21 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por zuly (2 intervenciones) el 01/02/2019 13:54:26
hola mira no soy programadora pero estoy barada en un programa de nomina yo lo manejaba pero no manejo los macros me da desbordamiento que hacer
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
sin imagen de perfil
Val: 80
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Duda al implementar una interface

Publicado por María Inés (49 intervenciones) el 26/01/2019 12:19:31
Muchas gracias Phil Ro por todo el trabajo que te has tomado! Realmente una generosidad enorme de enseñarme tanto. Recién bajé los archivos y voy a estudiar lo que me has enseñado y te respondo a tu pregunta si es lo que necesitaba o no (que seguramente lo es) y si lo logré hacer funcionar apropiadamente. Repito, enormemente agradecida por tomarte el tiempo de enseñarme varios métodos para así la próxima saber cuál es el que más me conviene. (Mi versión de Visual Studio es la 2017)
Un abrazo grande y a la brevedad te estaré contando!
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