Hola playmepe.
Creo que es una pregunta para el foro de General. Aunque veamos que el foro se llama Fragmentos de Códigos/Aplicaciones.
Que lo decida nuestro administrador.
A ver si esto te soluciona la duda. (Creo el ListBox desde código.)
Para ello uso un array donde almaceno el indice de los elementos seleccionados.
Y luego usando este array en orden inverso para el bucle for. Elimino los elementos
en el listbox desde el último elemento del listbox seleccionado hasta el primero.
¿ Y por que lo hago así ?.
¿ Qué les ocurre a los indice de un array cuando se elimina un elemento de su lista ?
Happy tiene indice 0, Bored tiene indice 1, Hungry tiene indice 2..
Si elimino "Bored" que tiene indice 1, ¿ qué palabra o cadena será insertada en el indice 1 ?.
Ahora imagina lo que es eliminar varios a la vez, todos los desplazamientos que van ocurriendo.
Código:
Private emotions As String[] = ["Happy", "Bored", "Hungry", "Thirsty", "Worried"]
Private alistbox As ListBox
Public Sub Form_Open()
alistbox = New ListBox(Me) As "Handler"
With alistbox
.List = emotions
.W = 200
.H = 200
.X = (Me.w - .w) / 2 'Centra el listbox en eje horizontal
.y = (Me.h - .h) / 2 'Centra el listbox en eje vertical
.Mode = Select.Multiple 'Para poder seleccionar más de un elemento en la lista
End With
End
Public Sub Handler_KeyPress()
Dim seleccionados As New Integer[]
If Key.code = Key.Delete Then 'Si la tecla pulsada es suprimir
For j As Integer = 0 To alistbox.Count - 1
If alistbox[j].Selected Then seleccionados.Add(j)'Ponemos el indice del elemento seleccionado en el array de seleccionados
Next
'Eliminamos los elementos en la lista usando el array seleccionados en orden inverso
For j As Integer = seleccionados.Count - 1 To 0 Step -1
alistbox.Remove(seleccionados[j])
Next
Endif
End
Saludos