Ik zit weer eens met een volgens mij simpel probleem.
ik heb een listview (merktabel) welke merken van autos bevat,
een listview (plaats_list2) welke leeg is
en een textbox welke we meegeven als woord.
Het is de bedoeling dat als ik in de textbox iets zet, dat er in plaats_list2 de merken komen te staan welke in merktabel voldoen aan de text in de textbox.
voorbeeld:
Als ik in de textbox "ford" in geef moet er in plaats_list2 "bedford, ford, ford usa" komen te staan
Nu heb ik daar de volgende routine voor bedacht:
Enkel als ik deze draai krijg ik de volgende fout op regel 6 (hierboven):
Maar omdat ik hem clone zal het volgens mij mening moeten werken.
Maak ik hier een denk fout?
Ik weet dat ik het als volgt kan oplossen.
Wat bijna de zelfde techniek is enkel is het loopje vertragend.
(Nu gebruik ik een tabel van z'n 130 merken, maar de zelfde techniek moet gaan werken voor 1 a 2 duizend items in een tabel.)
Dus mijn vraag nog een specifiek
Maak ik gewoon een grove denk fout?
En wat kan ik doen om toch de snelheid er een beetje in te houden?
ik heb een listview (merktabel) welke merken van autos bevat,
een listview (plaats_list2) welke leeg is
en een textbox welke we meegeven als woord.
Het is de bedoeling dat als ik in de textbox iets zet, dat er in plaats_list2 de merken komen te staan welke in merktabel voldoen aan de text in de textbox.
voorbeeld:
Als ik in de textbox "ford" in geef moet er in plaats_list2 "bedford, ford, ford usa" komen te staan
Nu heb ik daar de volgende routine voor bedacht:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
| Private Sub MerkFilterList1(ByRef woord As TextBox) Dim items() As ListViewItem Plaats_list2.Items.Clear() items = merktabel.Items.Find(woord.Text, False) Plaats_list2.Items.AddRange(items.Clone) If Plaats_list2.Items.Count = 0 Then woord.Text = woord.Text.Remove(woord.Text.Length - 1) woord.SelectionStart = woord.Text.Length End If End Sub |
Enkel als ik deze draai krijg ik de volgende fout op regel 6 (hierboven):
Wat volgens mij komt omdat hij items als reference heeft meegenomen.Cannot add or insert the item 'ALFA ROMEO' in more than one place.
You must first remove it from its current location or clone it.
Parameter name: item
Maar omdat ik hem clone zal het volgens mij mening moeten werken.
Maak ik hier een denk fout?
Ik weet dat ik het als volgt kan oplossen.
Wat bijna de zelfde techniek is enkel is het loopje vertragend.
(Nu gebruik ik een tabel van z'n 130 merken, maar de zelfde techniek moet gaan werken voor 1 a 2 duizend items in een tabel.)
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Private Sub MerkFilterList1(ByRef woord As TextBox) Dim items() As ListViewItem Plaats_list2.Items.Clear() items = merktabel.Items.Find(woord.Text, False) For Each itm As ListViewItem In items Plaats_list2.Items.Add(itm.Clone) Next If Plaats_list2.Items.Count = 0 Then woord.Text = woord.Text.Remove(woord.Text.Length - 1) woord.SelectionStart = woord.Text.Length End If End Sub |
Dus mijn vraag nog een specifiek
Maak ik gewoon een grove denk fout?
En wat kan ik doen om toch de snelheid er een beetje in te houden?
Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein