lunes, 21 de enero de 2008

Como buscar un item en un listview

Para este sencillo ejemplo necesitamos un listview y un simple botón. Es muy importante ir a las propiedades del listview y seleccionar la propiedad view a detalles, para que el listview nos aparezca en forma de lista.

La idea de este ejemplo es hacer un sencillo mecanismo de búsqueda en el listview que permita encontrar un item dentro del listview, o lo que es lo mismo, buscar un elemento en la lista de datos que tenemos. ¿Y como lo hacemos? Muy sencillo, utilizando el método FindItemWithText que nos proporciona Visual Basic .Net.

Además, este método nos permite buscar por los comienzos de la cadena, de manera que si no escribes la palabra completa, la búsqueda se situará en el primer elemento que la cumpla. Veamos el código:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim item As ListViewItem

'Inicializamos el listview
ListView1.Items.Clear()
ListView1.Columns.Clear()

ListView1.Columns.Add("Animal", "", 400)

'Cargamos algunos elementos
item = New ListViewItem
item.Text = "Perro"
ListView1.Items.Add(item)

item = New ListViewItem
item.Text = "Avestruz"
ListView1.Items.Add(item)

item = New ListViewItem
item.Text = "Loro"
ListView1.Items.Add(item)

item = New ListViewItem
item.Text = "Canario"
ListView1.Items.Add(item)

item = New ListViewItem
item.Text = "Gato"
ListView1.Items.Add(item)


End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim itmx As ListViewItem

itmx = ListView1.FindItemWithText("Canario")
If Not itmx Is Nothing Then
itmx.Selected = True
itmx.ForeColor = Color.Red
itmx.EnsureVisible()
End If

End Sub
End Class
Como ves, el ejemplo es muy simple, A FindItemWithText le tienes que pasar el texto que quieres buscar y el elemento que cumpla las condiciones se pondrá en rojo y el listview se moverá hasta el (de eso se encarga el EnsureVisible).

Por último, decirte que este método es tremendamente rápido, y consigue buscar información mucho más velozmente que si la búsqueda la haces con un bucle while. Para ello, puedes hacer la prueba cargando un un listview miles de items.

3 comentarios:

Anónimo dijo...

muchas gracias por la ayuda me ha serviso de mucho ayudas como estas son las que hacen que principiantes como nosotros aprendamos mucho mas

Anónimo dijo...

muchisimas gracias por este aporte me ayudo de mucho

Anónimo dijo...

Gracias por este aporte, a pesar de loa años transcurridos sigue siendo muy útil.