Leere Items aus einer Listbox löschen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hpunit.

    Leere Items aus einer Listbox löschen

    Tag, wie in der Überschrift schon beschrieben, möchte ich leere Einträge in einer Listbox löschen.
    Ich hab dazu hier im Forum in einem Beitrag dies hier gefunden, nur leider tut sich damit nichts.

    VB.NET-Quellcode

    1. For i = ListBox1.Items.Count - 1 To 0 Step -1
    2. If ListBox1.Items(i).Equals("") Then ListBox1.Items.RemoveAt(i)
    3. next


    Ich habe als Testform einfach nur eine Form mit einer Listbox und einem Button
    Die Listbox enthält 2 leere Einträge und eins mit dem Namen "voll"

    Weiß jemand Rat?
    Bei mir funktioniert der Code:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. ListBox1.Items.Clear()
    3. Dim txt() As String = {"", "lkjklj", "", "", "iopiopi", ""}
    4. ListBox1.Items.AddRange(txt)
    5. For i = ListBox1.Items.Count - 1 To 0 Step -1
    6. ' hier gehen beide Varianten-
    7. If ListBox1.Items(i).Equals("") Then ' If String.IsNullOrEmpty(ListBox1.Items(i).ToString) Then
    8. ListBox1.Items.RemoveAt(i)
    9. End If
    10. Next
    11. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Dim s As List(Of String) = (From str In listBox1.Items Select str).ToList()
    2. listBox1.Items.Clear()
    3. listBox1.Items.AddRange((From str In s Where str <> "" Select str).ToArray())


    /ungetestet in VB, in C# klappts ^^

    oder (leider nur in C#, kp wie man das mit den Lambda ausdrücken übersetzt):

    C-Quellcode

    1. List<String> s = (from String str in listBox1.Items select str).ToList();
    2. s.RemoveAll(t => t.Equals("");
    3. listBox1.Items.Clear();
    4. listBox1.Items.AddRange(s.ToArray());

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Rinecamo“ ()

    Danke für alle Tipps
    Ich habs jetzt so gelöst

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1
    3. If ListBox1.Items.Item(i) = "" Then
    4. ListBox1.Items.RemoveAt(i)
    5. End If
    6. Next
    7. End Sub