none
problema al concatenar cadena con evento text changed vb 2017 RRS feed

  • Pregunta

  • Buenos días a todos, estoy tratando de concatenar una cadena contenida en un label mas lo que escribo en un textbox

    pero no me esta funcionado 

    Ejemplo de lo que quiero hacer:

    LOAD

    Label.text="10 con:"

    EVENTO TEXTCHANGED DEL TEXTBOX

     lblmostrar.Text = CStr(Me.lblmostrar.Text) & " " & CStr(TEXTBOX.Text) ;

    esto me esta dando un error raro me duplica cada caracter que ingreso mendiante el textbo, por ejemplo si agrego un 2 me escribe en el label 22 y asi sucesivamente,

    Que puedo hacer, me pueden ayudar por favor. 

    martes, 31 de marzo de 2020 16:28

Todas las respuestas

  • Cuando haces esto:

     lblmostrar.Text = CStr(Me.lblmostrar.Text) & " " & CStr(TEXTBOX.Text) ;

    estás diciendo que quieres concatenar en el label todo lo que haya en el textbox (no dice nada de que se concatene el último carácter del textbox).

    Si lo pones en el evento Changed, tienes que tener en cuanta que ese evento se dispara cada vez que se añade un carácter en el textbox.

    Por lo tanto, cuando tecleas el primer carácter, ese carácter se añade al label. Cuando añades un segundo carácter, los dos caracteres que ahora tiene el textbox se concatenan a lo que ya tenía el label. Por lo tanto, el primero de esos dos caracteres se habrá concatenado dos veces. Si luego introduces un tercer carácter, los tres caracteres que ahora hay en el textbox se concatenarán a los tres que ahora hay en el label... ¿ves ya el problema?

    La solución más sencilla es guardar lo que había en el label al principio, antes de comenzar a concatenarle cosas, y luego en el textbox_changed meter en el label lo que había al principio (no lo que hay ahora) más lo que hay en el textbox.

    Por cierto, los CSTR que has metido en tu sentencia no valen para nada. Si tomas un string (la propiedad .Text) y le dices que lo convierta en string, obviamente no se convierte nada.

    martes, 31 de marzo de 2020 16:45
  • Exactamente lo que deseo es concatenar la cadena del label mas lo que se va escribiendo en el textbox

    pero me da ese problema que dices...

    martes, 31 de marzo de 2020 16:50
  • me sigue dando lo mismo

      Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    
            Dim lbl As String = Me.Label1.Text
    
            Dim txt As String = Me.TextBox1.Text
    
            Me.Label1.Text = ""
            Me.Label1.Text = lbl + " " + txt
    
        End Sub
    
        Private Sub FormAddControls_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.Label1.Text = "10 con:"
        End Sub

    martes, 31 de marzo de 2020 16:54
  • Deleted
    martes, 31 de marzo de 2020 19:26
  • No puede funcionar ninguna de las dos soluciones que has dado. El contenido del label hay que salvarlo en una variable a nivel de form, no puede estar declarada en ninguno de los eventos.

    Public class FormAddControls
       Inherits Form
    
       Private valorInicialDelLabel As String
    
       Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    
            Me.Label1.Text = valorInicialDelLabel + " " + Me.TextBox1.Text
    
        End Sub
    
        Private Sub FormAddControls_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.Label1.Text = "10 con:"
            valorInicialDelLabel = Me.Label1.Text 
        End Sub

    martes, 31 de marzo de 2020 20:20