Usuario
problema al concatenar cadena con evento text changed vb 2017

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.
- Editado Reynaldo Sanchez martes, 31 de marzo de 2020 16:34
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.
-
-
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
-
-
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