none
Completar un único label con varios textbox Visual basic

    Pregunta

  • Buenas, 

    Estoy intentando que el texto que aparece en un label sea el texto de varios textbox. 

    Por ejemplo: 

    Textbox1 --> Prueba 

    Textbox2 --> Nº2 

    Label --> Prueba Nº2

    He intentado con "and" o  "&" pero no vale.

    Para no tener que estar creando un label por cada textbox. 

    Utilizo visual basic 2015

    Gracias de antemano.

    Un saludo.

    miércoles, 15 de febrero de 2017 11:03

Respuestas

  • Damuoza,

    El tema es bastante simple: si deseas concatenar dos o más valores (sin importar el origen) basta con unir las partes con el operador de concatenación '&', por ejemplo:

    Label1.Text = TextBox1.Text & " " & TextBox2.Text

    Nota que concatenamos el valor de la propiedad Text del objeto TextBox1, mas un carácter de espacio en blanco y finalmente el valor de la propiedad Text del objeto TextBox2, ¿algo complicado?.

    La pregunta es, ¿en que momento deseas concatenar los valores? Si el valor de cualquier cuadro de texto puede cambiar entonces debes actualizar el valor de la propiedad Text del objeto Label cada vez que el valor cambia y el evento TextChanged (de los cuadros de texto) es el recomendado (y es el que te hemos propuesto), salvo que el contenido de los cuadros de texto lo ingreses en tiempo de diseño entonces la concatenación la deberías hacer también en el evento Load del formulario.

    Te recomiendo que pruebes el código que te he dejado en el aporte anterior y menciones las pruebas que haces y los resultados que obtienes y los que esperas, créeme que esto es algo tan simple que no merece el tiempo adicional que le estamos otorgando.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 16 de febrero de 2017 2:50

Todas las respuestas

  • Hola,

    Creo que esto te puede servir:

       Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            Label1.Text = Label1.Text & Mid(TextBox1.Text, TextBox1.Text.Length, 1)
        End Sub
    
        Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
            Label1.Text = Label1.Text & Mid(TextBox2.Text, TextBox2.Text.Length, 1)
        End Sub

    Faltaría el tema de espacios. A medida que escribís en Text1 o Text2, el texto aparece en Label1

    Saludos

    Daniel

    • Propuesto como respuesta Daniel_Tango miércoles, 15 de febrero de 2017 13:51
    • Votado como útil Joyce_ACModerator jueves, 16 de febrero de 2017 15:27
    miércoles, 15 de febrero de 2017 13:51
  • Damuoza,

    Los operadores de concatenación en Visual Basic son los símbolos de '&' (ampersand) y '+' (suma), mencionas que utilizaste el operador &, ¿qué problemas has tenido?

    Para el caso lo simple es utilizar una función de concatenación Método String.Concat (String, String), o también una función de formato para objetos que representen una cadena Método String.Format (String, Object), también es conveniente utilizar un sólo controlador de eventos vinculado a todos los objetos de tipo TextBox que utilizas:

    Private Sub Concatenar_TextChanged(sender As Object, e As EventArgs) Handles _
    	TextBox1.TextChanged, TextBox2.TextChanged
    
    	Label1.Text = String.Format("{0} {1}", TextBox1.Text, TextBox2.Text)
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 15 de febrero de 2017 15:20
  • Buenas, 

    Muchas gracias por la ayuda. 

    Al utilizar & o + no da error, pero luego no muestra nada, es decir el label se queda en blanco aunque los textBox no estén vacíos. 

    He probado con lo que me has comentado, pero tampoco me sale nada, el label se queda en blanco. 

    Label1.Text = String.Format("{0} {1}", TextBox1.Text, TextBox2.Text)
    Para que es el " {0} {1}" ? 

    Gracias.

    Un saludo.


    • Editado Damuoza miércoles, 15 de febrero de 2017 23:31
    miércoles, 15 de febrero de 2017 23:27
  • Buenas, 

    Muchas gracias por la ayuda,

    He probado como me comentas pero no entiendo demasiado bien el método. Como hago si quiero poner: 

    Textbox1 --> Prueba 

    Textbox2 --> Nº2 

    Como ves, intercalo texto que siempre va a estar y que no depende de los textbox. 

     Como hago para poner espacios?

    Label --> Prueba "Especial" Nº2

    Gracias. 

    Un saludo.

    miércoles, 15 de febrero de 2017 23:38
  • Entiendo que "Especial"es espacio.

    El par de Handler que te puse (que pueden fácilmente hacerse en uno), lo que hacen es agregar al texto de Label1 el último carácter que se escribe en Textbox1 o 2, sin orden ni espacio. Tenés que pensarlo un poco para determinar cuándo finaliza el ingreso de texto (con espacio o con enter?) y que aparezca en orden.

    Daniel 

    jueves, 16 de febrero de 2017 1:06
  • Damuoza,

    El tema es bastante simple: si deseas concatenar dos o más valores (sin importar el origen) basta con unir las partes con el operador de concatenación '&', por ejemplo:

    Label1.Text = TextBox1.Text & " " & TextBox2.Text

    Nota que concatenamos el valor de la propiedad Text del objeto TextBox1, mas un carácter de espacio en blanco y finalmente el valor de la propiedad Text del objeto TextBox2, ¿algo complicado?.

    La pregunta es, ¿en que momento deseas concatenar los valores? Si el valor de cualquier cuadro de texto puede cambiar entonces debes actualizar el valor de la propiedad Text del objeto Label cada vez que el valor cambia y el evento TextChanged (de los cuadros de texto) es el recomendado (y es el que te hemos propuesto), salvo que el contenido de los cuadros de texto lo ingreses en tiempo de diseño entonces la concatenación la deberías hacer también en el evento Load del formulario.

    Te recomiendo que pruebes el código que te he dejado en el aporte anterior y menciones las pruebas que haces y los resultados que obtienes y los que esperas, créeme que esto es algo tan simple que no merece el tiempo adicional que le estamos otorgando.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 16 de febrero de 2017 2:50
  • Buenas, 

    Ya está solucionado, he realizado como comentaba Willams Morales y ahora me ha funcionado. 

    Gracias por tu ayuda. 

    Saludos. 

    jueves, 16 de febrero de 2017 8:18
  • Buenas, 

    Ahora si que funciona!

    De verdad que lo intenté igual que como me has dicho que lo haga y ahora si que me ha funcionado... 

    Disculpa por hacer perder el tiempo. 

    Gracias. 

    Un saludo.

     

    jueves, 16 de febrero de 2017 8:20