[vb.net] listbox zoeken 'out of range'

Pagina: 1
Acties:

  • Praetorian
  • Registratie: November 2001
  • Laatst online: 19-05 11:27
Ik maak gebruik van 2 listboxes, listboxen met allerlei nummers..
Het is de bedoeling dat ik met i door listbox1 heen ga en kijk of dat nummer ook
bestaat in listbox, is hij gevonden? Dan wordt hij verwijderd uit de listbox1...

Werkt uitstekend als ik in de 2 listboxes een paar items handmatig toevoeg, niets mis met de code dus denk ik...

code:
1
2
3
4
5
6
7
8
        Dim i As Integer
        Dim x As Integer
        For i = 0 To ListBox1.Items.Count - 1
            x = ListBox.FindString(ListBox1.Items(i))
            If x > -1 And x < ListBox.Items.Count Then
                ListBox1.Items.RemoveAt(x)
            End If
        Next


MAAR, ik query de nummers uit een database in de listboxes, gaat om een paar honderd nummers, als ik dan deze code er op los laat dan krijg ik op

code:
1
            x = ListBox.FindString(ListBox1.Items(i))


de volgende foutmelding:

Specified argument was out of the range of valid values

Iemand enig idee hoe ik dat netjes kan oplossen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Items removen uit een list doe je door die list van achter naar voren te doorlopen, en niet van voor naar achter.

Je fout wordt daar nl door veroorzaakt. Je overloopt een aantal items (van 0 tot n), je verwijderd daar items uit, en je 'n' klopt niet meer)

[ Voor 40% gewijzigd door whoami op 28-10-2004 11:20 ]

https://fgheysels.github.io/


  • Praetorian
  • Registratie: November 2001
  • Laatst online: 19-05 11:27
code:
1
For i = (ListBox1.Items.Count - 1) To 0 Step -1


Stom dat ik daar niet aan gedacht heb, bedankt!
Ik stuite gelijk op een ander probleem bij de regel:
code:
1
ListBox1.Items.RemoveAt(x)

Deze heb ik maar vervangen door (item index opnieuw maken dacht ik):
code:
1
ListBox1.Items.RemoveAt(ListBox1.Items.IndexOf(ListBox1.Items(x)))