Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 16.01.09 |
Doppelte Einträge einer (Combo-)Listbox löschen Eine kleine Funktion, die alle doppelte Einträge innerhalb einer Combo- bzw. ListBox entfernt. | ||
Autor: Dieter Otter | Bewertung: | Views: 20.111 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
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