miércoles, 5 de agosto de 2009

Eliminar elementos de un ListBox

Este sería el código a usar para eliminar el elemento que está seleccionado:Private Sub ListBox1_KeyDown(ByVal sender As Object, ByVal e_
As System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDown
If e.KeyCode = Keys.Delete Then
' Borrar las palabras seleccionadas del listbox
Dim i As Integer
With ListBox1
For i = .SelectedItems.Count - 1 To 0 Step -1
.Items.Remove(.SelectedItems.Item(i))
Next
End With
End If
End Sub

La parte del If e.KeyCode = Keys.Delete Then En este caso, queremos
saber si el valor de e.KeyCode, que es la tecla que has pulsado, es igual a
Keys.Delete, éste último valor es un valor "predefinido" que
representa a la tecla suprimir.

Por tanto, si la tecla que hemos pulsado es igual a la tecla suprimir, entonces
hacer lo que viene a continuación...


Dim i As Integer esto le indica al VB
que vamos a usar un número y que ese número lo guarde en la variable i, de esto también tendrás
ocasión de enterarte mejor, por ahora dejémoslo así.


With ListBox1 el With se utiliza para
simplificarnos las cosas y lo que viene a significar es que donde se tendría
que usar el objeto ListBox1, se ponga un punto... más o menos... ahora veremos
cómo se escribiría el código sin usar el With ListBox1.


For i = .SelectedItems.Count - 1 To 0 Step -1 con esto le estamos indicando que use la variable i para ir
guardando los valores que resulten de contar desde el número de elementos que
hay seleccionados hasta cero. El Step -1 se usa para contar hacia atrás, (de
mayor a menor), pero eso, al igual que el For, también lo veremos más adelante.

SelectedItems es una colección en la cual están los elementos que hay
seleccionados en el ListBox.

¿Recuerdas la colección Items? Pues en este caso, SelectedItems son los
elementos seleccionados y para que lo sepas, todas las colecciones suelen tener
un método Count que nos dice el número de elementos que hay en ellas.


.Items.Remove(.SelectedItems.Item(i))
Esto es parecido a lo visto antes, es decir, elimina el elemento que está
seleccionado y que ocupa la posición i dentro de la colección de
elementos seleccionados.

Esto también lo podríamos haber escrito de esta otra forma:

.Items.Remove(.SelectedItems(i)) que para el caso es lo mismo.

En su momento veremos porqué.

Por ahora quédate con la copla de que Item es la propiedad o método
predeterminado de la colección SelectedItems.


Next indica que continúe el bucle o la
cuenta que estamos llevando con la variable i.

De esta forma, al haber usado el Step -1, lo que hacemos es contar hacia atrás
y si por ejemplo i valía 3, al llegar aquí, valdrá 2, es decir restamos 1: el
valor indicado en Step


End With indica hasta dónde llega el
tema ese del With ListBox1


End If le dice que hasta aquí llega la
comprobación que hicimos de si la tecla pulsada era la de suprimir.