locked
Pasar Información de un formulario a otro vb.net RRS feed

  • Pregunta

  • Buenas tardes,

    Tengo problemas al pasar información de un formulario a otro, os comento tengo Form1 en el que se abre dentro de un panel y Form2 se abre normal.

    Necesito pasar datos del Form2 al Form1 al pinchar sobre un boton que está situado en el Form2 pero no me responde.

    el código que he puesto es el siguiente:

        Private Sub Btn_Añadir_Click(sender As Object, e As EventArgs) Handles Btn_Añadir.Click

                 FrmTPV.Lbl_pagoTpv.Text = Lbl_Pago.Text (la forma de pago se selecciona mediante una variable)

    end sub

    alguien sabe por que no me pasa los datos??

    Muchas gracias

    martes, 14 de marzo de 2023 16:26

Todas las respuestas

  • Tu principal problema proviene de que estás confundiendo la clase del formulario con la instancia del formulario. Solo le puedes pasar el dato a la instancia, pero se lo estás intentando pasae a la clase. Piensa que una clase se puede instanciar muchas veces, por lo que podrías tener abiertas muchas instancias de una misma clase de formulario. Al pasar el dato, hay que decir a cuál de esas instancias se lo pasas; no basta con solo saber el nombre de la clase. Aunque tú sepas que solo la has instanciado una vez, el compilador no lo sabe.

    Donde haces esto:

    FrmTPV.Lbl_pagoTpv.Text = ...

    FrmTPV es la clase del formulario. Tenes que buscar dónde se instancia, or ejemplo así:

    Dim frm as New FormTPV()

    Esa variable "frm" es la que contiene la instancia. Para pasar el dato, lo harías así:

    frm.Lbl_pagoTpv.Text = Lbl_Pago.Text

    Claro, ahora la cuestión es que si ese "frm" lo generaste en otro sitio de tu programa y no en el sitio en donde le quieres pasar el valor, entonces el contenido de esa variable "frm" hay que hacérselo llegar hasta ahí de alguna manera. Esto dependerá de la estructura de tu programa. Por ejemplo, si esa instancia está dentro de un panel, podrías recuperarla a través de la colección Controls del panel. O en otros casos, podrías usar una variable global, o pasarla como argumento en el constructor de la clase que la requiere, etc. Todo depende de cómo esté estructurado tu programa.

    martes, 14 de marzo de 2023 17:15
  • Buenas tardes,

    el frmTpv se abre en un panel contendor, los datos que estoy intentando pasar a ese formulario está en otro Formulario 2  y quiero pasar los datos una vez que pinche en un boton del formulario 2, y que tnego que hacer otra variable notificando el control del panel??

    martes, 14 de marzo de 2023 17:24
  • Hola Ebre

    Si el textbox (Lbl_pagoTpv) del segundo formulario (FrmTPV) está dentro de un panel debes hacerlo así

    FrmTPV.NombredelPanel.controls("Lbl_pagoTpv").Text=Lbl_Pago.Text

    Es decir los controles dentro de un panel no están dentro del form.nombrecontrol.propiedad sino en form1.panel1.controls("nombredelcontrol").propiedad

    De todas formas para pasar variables entre formularios hay otras formas más académicas.

    Bien chapuceramente con variables globales o bien definiendo propiedades al propio formulario.

    Un saludo



    • Editado Javatex martes, 14 de marzo de 2023 17:57
    martes, 14 de marzo de 2023 17:49
  • Hola Ebre,

    Espero que te encuentres bien.

    ¿Hay alguna novedad sobre la consulta realizada?

    ¿Fue útil la respuesta por los compañeros?

    Gracias por usar los foros de MSDN.

    Benjamin G,


    Recuerde "marcar como respuesta" las respuestas que resolvieron su problema, es una forma común de reconocer a quienes ayudaron y facilita que otros visitantes encuentren la solución más adelante.

    Si tiene algún cumplido o queja sobre el soporte técnico de MSDN, no dude en ponerse en contacto con MSDNFSF@microsoft.com

    miércoles, 15 de marzo de 2023 17:47
    Moderador
  • Hola Ebre,

    Espero que te encuentres bien.

    No hemos tenido noticias sobre tu caso, ¿todavía necesitas ayuda? En caso afirmativo, haznoslo saber y con gusto te ayudamos.

    Gracias por usar los foros de MSDN.

    Benjamin G,


    Recuerde "marcar como respuesta" las respuestas que resolvieron su problema, es una forma común de reconocer a quienes ayudaron y facilita que otros visitantes encuentren la solución más adelante.

    Si tiene algún cumplido o queja sobre el soporte técnico de MSDN, no dude en ponerse en contacto con MSDNFSF@microsoft.com

    viernes, 17 de marzo de 2023 15:02
    Moderador
  • Hola Ebre,

    Esperamos que te encuentres bien. No hemos escuchado noticias de en relacion al caso.

    Procederemos a cerrar el caso por inactividad. Si aun tienes preguntas sobre tu caso aun puedes contestar y reabriremos tu caso, o bien puedes abrir otro foro.

    Gracias por usar los foros de MSDN.

    Benjamin G,


    Recuerde "marcar como respuesta" las respuestas que resolvieron su problema, es una forma común de reconocer a quienes ayudaron y facilita que otros visitantes encuentren la solución más adelante.

    Si tiene algún cumplido o queja sobre el soporte técnico de MSDN, no dude en ponerse en contacto con MSDNFSF@microsoft.com

    miércoles, 22 de marzo de 2023 15:40
    Moderador
  • Muchas gracias por tu aportación me has ayudado mucho, me ha funcionado perfectamente.
    jueves, 23 de marzo de 2023 8:37