none
Asignar texto a un textbox o label desde otro form RRS feed

  • Pregunta

  • Buenas tardes, gente estoy intentando asignar texto desde un formulario a un textbox o label de otro formulario. Paso foto y ejemplo del código que estoy utilizando.

    En la imagen vemos dos form, llamemos Form1 al menu principal y Form2 al pequeño form que se abre al intentar buscar un socio.

    Código desde el Form1:

    Public Shared NombreSocioFiltro As String

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim F2 As New Form2
            F2.F1 = Me
            Form2.Show()
     End Sub

    Código desde el Form2:

    Public F1 As New Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'Asigno valor a la variable NombreSocioFiltro del Form1
            Form1.TextBox1.Text = Form1.NombreSocioFiltro
            Form1.TextBox1.Refresh()
            Form1.Label4.Text = Form1.NombreSocioFiltro
            Form1.Label4.Refresh()
            Me.Close()
    End Sub

    ...............

    Adjunto imagenes del debug, tanto el textobx como el label ubicado en el Form1 adquieren su valor en la propiedad .text, el problema es que al cerrar el Form2, en el Form1 no se reflejan los resultados.

    Aguardo ayuda, saludos Guillermo.

    domingo, 15 de septiembre de 2019 23:36

Todas las respuestas

  • Hola

    intenta ponerlo como dialog

    Form2.ShowDialog()

    para que ese detenga y espere a que cierre

    lunes, 16 de septiembre de 2019 3:05
  • Hola Gomez, sucede que en VB no es como en C#, no necesitas un delegado para pasar valores de un from a otro mediante controles, esto es porque en las propiedeades de estos estan preasignados su nivel de protección  como "Friend" esto significa que se tiene axceso a miembros de la misma clase, por otro lado veo que en el texto colocas Form1.TextBox1.Text = Form1.NombreSocioFiltro esto si está mal aignas el mismo valor que tiene el Form1 a Form1 por tal sera lo que tengas originalmete en el Form1.

    Simplemente colocas en el form2

      Form1.TextBox4.Text = "Hola"
            Form1.TextBox5.Text = "Mundo"
            Form1.TextBox6.Text = "Nuevo"

            Me.Close()

    El debate de la encapsulación adecuada quedara para otra tarea...

    Esto es lo que entiendo de tu consulta espero te ayude saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗

    • Propuesto como respuesta Pablo Rubio miércoles, 18 de septiembre de 2019 16:22
    lunes, 16 de septiembre de 2019 4:15
  • Buenas tardes, probé con Form2.ShowDialog() al pasar del Form1 al Form2, pero sigue igual, con respecto a la otra respuesta, lo que hago es almacenar el valor en una variable "NombreSocioFiltro" porque luego la uso en el crystalreportViewer para imprimir este resumen filtrado.

    Esta variable esta declarada en el Form1 como public shared NombreSocioFiltro as string, justamente para poder ser alterada desde el form2 y luego poder acceder a ella desde el form que contiene el ReportViewer.

    Mas alla de eso, en las imagenes se ve que tanto la variable NombreSocioFiltro adquiere de manera correcta su valor, luego se iguala el Form1.textbox1.text = Form1.NombreSocioFiltro, el txt tambien adquiere de manera correcta este valor. Lo que no puedo lograr es que al cerrar el Form2, el textbox1.text que está en el form1 muestre el texto adquirido en el otro form. 

    Otra idea que se me ha ocurrido es al ejecutar Form2.Close(), ejecutar algún procedimiento declarado en Form1 que logre actualizar el textbox1 o bien un procedimiento que me logre ejecutar nuevamente el evento load del Form1, para poder ver el resultado reflejado.

    Saludos Guillermo

    • Propuesto como respuesta Pablo Rubio viernes, 20 de septiembre de 2019 18:41
    lunes, 16 de septiembre de 2019 19:38
  • Hola:
    Mira el siguiente enlace

    https://social.msdn.microsoft.com/Forums/es-ES/b182bfd1-d011-4447-afc4-24daa126a72b/buscar-datos-de-un-texbox-y-abrir-un-formulario-secundarioy-de-este-extraer-datos-al-formulario?forum=vbes

    Un saludo desde Bilbo
    Carlos

    miércoles, 18 de septiembre de 2019 18:21
  • Hola

    No se si estoy entendiendo mal, pero lo que necesitas es lo siguiente??

    en el Form1, en el evento click del botom

     With frmform2
                .LBLRECIBIDO.Text = "Form1: " & TXTENVIAR.Text
            End With

    lo mismo pero en el form2

    With frmform1
                .LBLRECIBIDO.Text = "Form2: " & TXTENVIAR.Text
            End With

    miércoles, 18 de septiembre de 2019 18:43
  • Hola

    No se si estoy entendiendo mal, pero lo que necesitas es lo siguiente??

    en el Form1, en el evento click del botom

     With frmform2
                .LBLRECIBIDO.Text = "Form1: " & TXTENVIAR.Text
            End With

    lo mismo pero en el form2

    With frmform1
                .LBLRECIBIDO.Text = "Form2: " & TXTENVIAR.Text
            End With

    Buen día, es algo similar, con dos form abiertos como tenes en la imagen, pero en un form solo esta el label donde se mostrará el resultado de la búsqueda del otro form. Siguiendo tu ejemplo, en el From1 solo tendrías un label, y en el form2 tendrías textbox + button. Suponiendo que en el textBox Form2 se coloca "Hola bebe" y al darle click al button, el Form2 debería cerrarse, quedando solo el Form1 abierto ya que es el form madre (bulgarmente hablando), y dentro del label del form1 debería aparecer el texto que estaba en el textBox del form2.

    Intentaré con tu ejemplo de todas maneras, puede que funcione con algunos retoques.

    Saludos Guille.

    jueves, 3 de octubre de 2019 14:22