Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 16.01.09 |
Wie lässt sich am einfachsten eine Routine erstellen, welche nach doppelten Einträgen innerhalb einer Combo- oder Listbox sucht und diese dann automatisch entfernt?
Eine Möglichkeit wäre die Einträge der Liste in ein String-Array zu kopieren und anschließend mittels einer kleinen Hilfsfunktion alle doppelten Einträge zu entfernen. Das Ergebnis wird
dann wieder zurück in die ListBox geschrieben.
With ListBox1.Items
' Inhalt der Liste in ein String-Array kopieren
Dim sItems(.Count - 1) As String
.CopyTo(sItems, 0)
' ListBox löschen
.Clear()
' doppelte Einträge aus dem Array entfernen und
' Array zurück in die ListBox schreiben
.AddRange(DestinctArray(Of String)(sItems))
End With
' Diese Funktion stammt aus dem Tipp:
' Doppelte Werte bei Ausgabe eines Arrays unterdrücken
Private Function DestinctArray(Of T)(ByVal arr() As T) As T()
Dim tList As New List(Of T)
For Each i As T In arr
If Not tList.Contains(i) Then
tList.Add(i)
End If
Next
Return tList.ToArray
End Function