locked
Añadir/Obtener datos de columnas de ListView RRS feed

  • Pregunta

  • Buen Día!!

    Espero me puedan ayudar con 2 dudas.

    PRIMERO: Tengo una aplicación en .Net con un ciclo "For Each" que lee un archivo txt y busca un dato especifico por medio de Delimitadores, para ello utilizo éste código:

    Using tfp As New FileIO.TextFieldParser(Environment.ExpandEnvironmentVariables("%appdata%\txt\archivo1.txt"))
                tfp.Delimiters = New String() {"*", ":"}
                Dim valor As String = String.Empty
                While Not tfp.EndOfData
                    Dim fields As String() = tfp.ReadFields()
                    If (fields(0) = "nombre") Then
                        valor = fields(1)
                        'AÑADIR "valor" AL ListView
                    End If
                    Dim fields2 As String() = tfp.ReadFields()
                    If (fields2(0) = "version") Then
                        valor = fields2(1)
                        'AÑADIR "valor" AL ListView
                        Exit While
                    End If
                End While
            End Using

    Como verán obtiene el dato "nombre y version", todo ésto funciona bien, la cuestión es que necesito añadir estos valores a un ListView, de manera que se muestre el "nombre" en la columna 1 y la "version" en la columna 2.

    Recordemos que es un ciclo For y por lo tanto abrirá varios archivo en cada vuelta, y quisiera que cada valor se añadiera en el siguiente renglón del ListView.

    Mi segunda duda es:

    Ya que tenga el ListView con todos los datos añadidos, ¿como puedo obtener el texto que se encuentra en la segunda columna de un renglón, o sea el dato "version" al seleccionar un item del ListView?

    Yo lo intente con el evento SelectedIndexChanged del ListView pero no me funciono.

    Espero que se entienda lo que traté de explicar, y gracias por su ayuda.

    lunes, 17 de marzo de 2014 6:16

Respuestas

  • 'listview 2 columnas vista detalles
    ListView1.Columns.Add("Nombre")
    ListView1.Columns.Add("Versión")
    ListView1.View = View.Details
    ListView1.FullRowSelect = True
    
    'agrega los items
    Dim lvi As New ListViewItem
    While Not tfp.EndOfData
    	Dim fields As String() = tfp.ReadFields()
    	If (fields(0) = "nombre") Then
    		valor = fields(1)
    		lvi.Text = valor
    	End If
    
    	Dim fields2 As String() = tfp.ReadFields()
    	If (fields2(0) = "version") Then
    		valor = fields2(1)
    		lvi.SubItems.Add(valor)
    		Exit While
    	End If
    End While
    ListView1.Items.Add(lvi)
    
    'extraes la versión del item seleccionado
    Private Sub ListView1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListView1.SelectedIndexChanged
    	If ListView1.SelectedItems.Count = 1 Then
    		MessageBox.Show(ListView1.SelectedItems(0).SubItems(1).Text, "Versión")
    	End If
    End Sub
    
    
    
    


    • Editado Walter Miguel lunes, 17 de marzo de 2014 12:23
    • Propuesto como respuesta Pablo Fébolo lunes, 17 de marzo de 2014 20:15
    • Marcado como respuesta Heberon martes, 18 de marzo de 2014 17:36
    lunes, 17 de marzo de 2014 12:20

Todas las respuestas

  • 'listview 2 columnas vista detalles
    ListView1.Columns.Add("Nombre")
    ListView1.Columns.Add("Versión")
    ListView1.View = View.Details
    ListView1.FullRowSelect = True
    
    'agrega los items
    Dim lvi As New ListViewItem
    While Not tfp.EndOfData
    	Dim fields As String() = tfp.ReadFields()
    	If (fields(0) = "nombre") Then
    		valor = fields(1)
    		lvi.Text = valor
    	End If
    
    	Dim fields2 As String() = tfp.ReadFields()
    	If (fields2(0) = "version") Then
    		valor = fields2(1)
    		lvi.SubItems.Add(valor)
    		Exit While
    	End If
    End While
    ListView1.Items.Add(lvi)
    
    'extraes la versión del item seleccionado
    Private Sub ListView1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListView1.SelectedIndexChanged
    	If ListView1.SelectedItems.Count = 1 Then
    		MessageBox.Show(ListView1.SelectedItems(0).SubItems(1).Text, "Versión")
    	End If
    End Sub
    
    
    
    


    • Editado Walter Miguel lunes, 17 de marzo de 2014 12:23
    • Propuesto como respuesta Pablo Fébolo lunes, 17 de marzo de 2014 20:15
    • Marcado como respuesta Heberon martes, 18 de marzo de 2014 17:36
    lunes, 17 de marzo de 2014 12:20
  • Hola Walter Miguel.

    He probado el ejemplo que mencionas y funciona justo como deseo.

    Gracias por tu tiempo.

    martes, 18 de marzo de 2014 17:35