none
Como extraer el valor de 1 textbox y ponerlo en 2 textbox RRS feed

  • Pregunta

  • Buenos Dias

    Si tengo un código en un textbox

    TextBox1 = CC001-222 

    y este quiero se vea en otro 2 Textbox de esta forma:

    TextBox2 = CC001

    TextBox3 = 222

    Como haría eso?

    Saludos y Gracias

    domingo, 4 de marzo de 2018 16:07

Respuestas

  • Una forma muy sencilla de conseguirlo es hacer un Split para partirlo por el guión y luego asignar los dos pedazos a los otros textboxes:

    string[] partes = textBox1.Text.Split(new char[]{'-'});
    textBox2.Text = partes[0];
    textBox3.Text = partes[1];
    

    Ni que decir tiene que dará un error si el textBox1 contiene algo que no tenga guión. Puedes controlar ese error validando si partes.Length==2.

    • Marcado como respuesta Javier Roque domingo, 4 de marzo de 2018 17:41
    domingo, 4 de marzo de 2018 16:29
  • Cuando Limpio el texto 0000-00 ali me da error "Indice fuera de los limites de la matriz"

    EXACTO. A eso precisamente se refería la parte donde te dije al principio que "Ni que decir tiene que dará un error si el textBox1 contiene algo que no tenga guión. Puedes controlar ese error validando si partes.Length==2."

    Obviamente eso te da la solución: Antes de acceder al partes(0) y partes(1) tienes que verificar que la matriz "partes" efectivamente contiene dos valores, de lo contrario te dice que "el índice está fuera de los límites de la matriz". Es algo trivialmente sencillo, solo tienes que aplicar "If partes.Length=2 Then (tomar los dos valores) Else (limpiar los dos textboxes)".

    • Marcado como respuesta Javier Roque martes, 6 de marzo de 2018 12:28
    martes, 6 de marzo de 2018 7:16
  • Dim partes() As String = txtCodMuestra.Text.Split(New Char() {Microsoft.VisualBasic.ChrW(45)})
            If partes.Length = 2 Then
                txtNumMuestra.Text = partes(0)
                txtNId.Text = partes(1)
            Else
                txtNumMuestra.Text = ""
                txtNId.Text = ""
            End If

    Muchas Gracias
    • Marcado como respuesta Javier Roque martes, 6 de marzo de 2018 12:29
    • Editado Javier Roque martes, 6 de marzo de 2018 12:29
    martes, 6 de marzo de 2018 12:29

Todas las respuestas

  • Una forma muy sencilla de conseguirlo es hacer un Split para partirlo por el guión y luego asignar los dos pedazos a los otros textboxes:

    string[] partes = textBox1.Text.Split(new char[]{'-'});
    textBox2.Text = partes[0];
    textBox3.Text = partes[1];
    

    Ni que decir tiene que dará un error si el textBox1 contiene algo que no tenga guión. Puedes controlar ese error validando si partes.Length==2.

    • Marcado como respuesta Javier Roque domingo, 4 de marzo de 2018 17:41
    domingo, 4 de marzo de 2018 16:29
  • Como seria eso en Vb por lo que me indicas esta en C# creo.

    Es asi?

    Dim partes() As String = txtCodMuestra.Text.Split(New Char() {Microsoft.VisualBasic.ChrW(45)})
            txtNumMuestra.Text = partes(0)
            txtNId.Text = partes(1)


    Bueno asi como esta si sale y bueno siempre va tener -

    Gracias

    domingo, 4 de marzo de 2018 17:38
  • Sí, así funcionará en VB, pero hay una forma más sencilla de escribirlo. Es poco conocido, pero en VB.NET puedes declarar un dato de tipo Char poniendo una "c" detrás del carácter entre comillas:

    Dim partes As String() = txtCodMuestra.Text.Split(New Char() {"-"c})

    Y si estás usando una versión moderna del Framework, hay una sobrecarga del Split que toma directamente el carácter, sin tener que meterlo en un array, con lo que queda más sencillo todavía:

    Dim partes As String() = txtCodMuestra.Text.Split("-"c) 

    domingo, 4 de marzo de 2018 20:40
  • Bueno es solo un ejemplo la c en realidad el valor es solo numeros que se una a otro el problema es que cuando limpio esa caja del 01 sale un error. que no me afecta en cierta forma pero ya no me limpia el resto de los textbox 

    Cuando Limpio el texto 0000-00 ali me da error "Indice fuera de los limites de la matriz"

    Eso pasa cuando guardo y cuando doy cancelar

    Alguna solución?

    Te agradecería mucho

    martes, 6 de marzo de 2018 1:43
  • Cuando Limpio el texto 0000-00 ali me da error "Indice fuera de los limites de la matriz"

    EXACTO. A eso precisamente se refería la parte donde te dije al principio que "Ni que decir tiene que dará un error si el textBox1 contiene algo que no tenga guión. Puedes controlar ese error validando si partes.Length==2."

    Obviamente eso te da la solución: Antes de acceder al partes(0) y partes(1) tienes que verificar que la matriz "partes" efectivamente contiene dos valores, de lo contrario te dice que "el índice está fuera de los límites de la matriz". Es algo trivialmente sencillo, solo tienes que aplicar "If partes.Length=2 Then (tomar los dos valores) Else (limpiar los dos textboxes)".

    • Marcado como respuesta Javier Roque martes, 6 de marzo de 2018 12:28
    martes, 6 de marzo de 2018 7:16
  • Dim partes() As String = txtCodMuestra.Text.Split(New Char() {Microsoft.VisualBasic.ChrW(45)})
            If partes.Length = 2 Then
                txtNumMuestra.Text = partes(0)
                txtNId.Text = partes(1)
            Else
                txtNumMuestra.Text = ""
                txtNId.Text = ""
            End If

    Muchas Gracias
    • Marcado como respuesta Javier Roque martes, 6 de marzo de 2018 12:29
    • Editado Javier Roque martes, 6 de marzo de 2018 12:29
    martes, 6 de marzo de 2018 12:29