Visual Basic - Error InvalidArgument en listbox

Life is soft - evento anual de software empresarial
 
Vista:

Error InvalidArgument en listbox

Publicado por junior (1 intervención) el 15/06/2019 16:52:43
Hola detallo lo que quiero hacer.
Estaba haciendo que si el dato que ingreso en el textbox esta en el listbox, este se borre.

Me da el siguiente error "InvalidArgument=El valor de '1' no es válido para 'index"
Adjunto el codigo.

1
2
3
4
5
6
7
8
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    For Me.i = 0 To ListBox2.Items.Count - 1
        If ListBox2.Items(i) = TextBox2.Text Then
            ListBox2.SelectedIndex = i
            ListBox2.Items.RemoveAt(i)
        End If
    Next
End Sub

Muchas gracias, desde ya!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error InvalidArgument en listbox

Publicado por gilman (359 intervenciones) el 16/06/2019 08:28:28
El problema está en que los limites inferior y superior del bucle for se calculan la primera vez que se ejecuta el bucle y no se volverán a calcular, así si el valor de ListBox2.Items.Count es, por poner un ejemplo 5 y eliminas el segundo item, ListBox2.Items(4) ya no existirá, pero se consultará por estar dentro de los limites del bucle, y se producirá el error.
Por otro lado, como veo que sales del bucle al encontrar el texto, supongo que podrían encontrarse elementos repetidos, y llegado el caso encontrarnos con una lista:
Texto1
Texto a eliminar
Texto a eliminar
Texto2

Con Texto a eliminar igual a TextBox2.Text, solo se eliminaría la primera de las ocurrencias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar