none
Llenar ComboBox desde cadena de texto con algunas condiciones

    Pregunta

  • He estado buscando por el foro pero no veo nada que solucione mi problema..

    Quiero llenar un combobox desde un string pero necesito que solo me muestre en el combobox las 8 primeras letras de los datos..

    La cadena tiene este formato:

    Telefono Nombre edad

    Telefono Nombre edad

    Telefono Nombre edad

    Telefono Nombre edad

    Entonces necesito que solo me muestre el campo "Telefono" en el combobox..

    Lo he intentado de esta forma, pero solo me muestra la primera linea en el combobox, es como si no recorriera todas las lineas de la cadena:

    Dim DatoTlf As String = Cadena

    Dim ListaNombres As New ArrayList
    ListaNombres.Add(DatoTlf)

         For x As Integer = 0 To CInt(ListaNombres.Count) - 1
             ComboBox3.Items.Add(Mid(CStr(ListaNombres.Item(x)), 1, 8))
         Next

    Cualquier ayuda sera bienvenida..





    • Editado JaviPatch lunes, 23 de enero de 2017 17:33
    lunes, 23 de enero de 2017 16:39

Respuestas

  • Ya he podido solucionarlo con la funcion Split:

    Dim strTest As String = DatoTlf
    Dim strArray() As String
    Dim intCount As Integer
    
    strArray = Split(strTest, Environment.NewLine)
    
         For intCount = LBound(strArray) To UBound(strArray)
            ListaNombres.Add(Trim(strArray(intCount)))
         Next
    
         For x As Integer = 0 To CInt(ListaNombres.Count) - 1
            ComboBox3.Items.Add(Mid(CStr(ListaNombres.Item(x)), 1, 8))
         Next

    • Propuesto como respuesta RHCRD lunes, 23 de enero de 2017 18:21
    • Marcado como respuesta Joyce_ACModerator miércoles, 25 de enero de 2017 23:40
    lunes, 23 de enero de 2017 18:19

Todas las respuestas

  • Ya he podido solucionarlo con la funcion Split:

    Dim strTest As String = DatoTlf
    Dim strArray() As String
    Dim intCount As Integer
    
    strArray = Split(strTest, Environment.NewLine)
    
         For intCount = LBound(strArray) To UBound(strArray)
            ListaNombres.Add(Trim(strArray(intCount)))
         Next
    
         For x As Integer = 0 To CInt(ListaNombres.Count) - 1
            ComboBox3.Items.Add(Mid(CStr(ListaNombres.Item(x)), 1, 8))
         Next

    • Propuesto como respuesta RHCRD lunes, 23 de enero de 2017 18:21
    • Marcado como respuesta Joyce_ACModerator miércoles, 25 de enero de 2017 23:40
    lunes, 23 de enero de 2017 18:19
  • JaviPatch,

    Podrías ahorrarte las variables "de paso" si utilizas el método AddRange() y algo de Linq.

    ComboBox3.Items.AddRange(DatoTlf.Split(New Char() {vbCr & vbLf, vbLf},
    				StringSplitOptions.RemoveEmptyEntries).
    				Select(Function(t) t.Substring(0, 8)).ToArray())

    No olvides indicar el espacio de nombres: Imports System.Linq


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    martes, 24 de enero de 2017 4:24