Elemente löschen aus ListBox/CheckedListBox VB.Net

  • Sonstige

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

    Elemente löschen aus ListBox/CheckedListBox VB.Net

    Hallo zusammen!

    Ich versuch mal mein Problem zu schildern. Ich habe ein Tool erstellt, das Dateien nach gewissen Eigenschaften (je nach Verwendung oder nicht) aus einem Ordner löscht.

    Auf meiner Oberfläche werden die Dateien des Ordners anhand einer CheckedListBox sichtbar, und mit Hilfe eines "Alle auswählen"-Buttons kann ich meine gewünschten Dateien markieren.

    Die Dateien die dann gelöscht werden, werden auf einer anderen ListBox ausgegeben. Jedoch werden durch wiederholtes drücken meines "löschen"-Buttons die Dateien abermals in die ListBox geschrieben.. Die stehen dann doppelt und dreifach drin!

    Liegt das an der CheckedListBox?

    Ich möchte ja nur dass die ausgewählten Dateien abgearbeitet werden und dann Schluss ist.

    Code und alles drumherum stimmt soweit, hab ich mir versichern lassen.

    Ich hoff ihr könnt mir weiterhelfen, komme leider nicht auf die Lösung.

    Vielen Dank
    Den hab ich leider im Moment nicht zur Verfügung! Aber ich probiers nochmal anders zu erklären, vielleicht hilft das bissl weiter bis ich den Code posten kann.

    Ich habe für mein Programm 2 ListBoxen; in der ersten stehen die Dateien die in Frage kommen zum löschen und in der 2. die gelöschten Dateien.

    Funktioniert soweit alles prima, doch leider fängt das Tool immer wieder von vorne an zu löschen.

    D.h. ich bräuchte eine Art Zähler oder Schleife, damit die Dateien, die bereits abgearbeitet sind aus der 1. ListBox rausgelöscht werden.
    Hmm, du kannst jedenfalls mit:

    Visual Basic-Quellcode

    1. While CheckedListBox1.CheckedItems.Count > 0
    2. CheckedListBox1.Items.RemoveAt(CheckedListBox1.CheckedIndices(0))
    3. End While


    Alle aktivierten einträge in der CheckedListBox entfernen.
    Vllt hilft dir das ja weiter.

    gruß

    EDIT:

    Hier nochwas:

    Visual Basic-Quellcode

    1. Dim itemsToRemove As New ArrayList
    2. For Each i As Integer In CheckedListBox1.CheckedIndices
    3. ' Datei löschen
    4. Next
    5. For Each i As Integer In itemsToRemove
    6. CheckedListBox1.Items.RemoveAt(i)
    7. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Templar“ ()

    Ja, danke hilft mir bestimmt weiter! Ich selber hab mir auch grad bisschen was überlegt; muss ich später alles gleich mal probieren!

    Visual Basic-Quellcode

    1. Dim j As Integer = 0
    2. Dim zaehler As Integer = CheckedListBox1.Items.Count
    3. Do Until j > zaehler
    4. If CheckedListBox1.Contains(sDatei = 0) Then
    5. CheckedListBox1.Items.RemoveAt(j)
    6. j -= 1
    7. End If
    8. j += 1
    9. Loop