Aufgelistete Ordner in Listbox richtig löschen, aber wie?

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von hablais.

    Aufgelistete Ordner in Listbox richtig löschen, aber wie?

    Hi,

    ich lasse mir in einer Listbox subdirectories anzeigen.
    Nun möchte ich ,wenn ich einen aus der Listbox wähle auch richtig löschen auf Knopfdruck.

    Bisher iseht das ganze so aus:

    VB.NET-Quellcode

    1. Private Sub Handler_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. 'Variable
    3. Dim di As New DirectoryInfo("C:\Stored(CC Handler)\")
    4. 'Ordner erstellen
    5. If IO.Directory.Exists("C:\Stored(CC Handler)\") = False Then
    6. IO.Directory.CreateDirectory("C:\Stored(CC Handler)\")
    7. End If
    8. 'Ordner einlesen
    9. For Each subDir As DirectoryInfo In di.GetDirectories()
    10. lbStored.Items.Add(DirectCast(subDir.Name, Object))
    11. Next
    12. End Sub
    13. Private Sub btnErase_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnErase.Click
    14. lbStored.Items.Remove(lbStored.SelectedItem)
    15. Directory.Delete(CStr(lbStored.SelectedItem), True) ' *
    16. End Sub


    *Hier tritt dann folgender Fehler aus:

    VB.NET-Quellcode

    1. Der Wert darf nicht NULL sein!


    Wie kann ich ihm den Pfad mit auf seinen Weg geben, sodass er nicht NULL ist?

    LG

    Hablais
    Funktioniert leider auch nicht aber es ändert sich die fehlermeldung die mir doch etwas kurios erscheint.
    Er nimmt einen komplett falschen Pfad.
    Der Ordner liegt in:C:\Stored(CC Handler)\

    Nunja...da bin ich mit meinen VB kenntnissen definitiv am ende^^

    LG
    Bilder
    • Unbenannt.png

      297,64 kB, 1.600×900, 105 mal angesehen
    Hey,

    beim Einlesen der Ordner übergibst du in die Listbox nur die Namen der Ordner (subDir.Name):

    VB.NET-Quellcode

    1. For Each subDir As DirectoryInfo In di.GetDirectories()
    2. lbStored.Items.Add(DirectCast(subDir.Name, Object))
    3. Next

    Beim Löschen gibst du auch nur den Ordnernamen an, nicht aber den Pfad dahin:

    VB.NET-Quellcode

    1. Directory.Delete(CStr(lbStored.SelectedItem), True)

    Deshalb denkt dein Programm, der Ordner liegt im selben Verzeichnis wie dein Programm. Deshalb die Fehlermeldung. Du musst deshalb vor dem Löschen des Ordners wieder den korrekten Pfad angeben.

    Gruß, Manschula
    Hey,

    das markierte Item in der Listbox beinhaltet den Namen des Ordners. Alle Ordner liegen im Pfad "C:\Stored(CC Handler)\". Also kannst du, mit der Combine-Methode beide Teile zu einem Pfad zusammensetzen:

    VB.NET-Quellcode

    1. Dim str_pfad As String = IO.Path.Combine("C:\Stored(CC Handler)\", CStr(lbStored.SelectedItem))

    Die Variable "str_pfad" beinhaltet jetzt den korrekten Pfad, also z.B.: "C:\Stored(CC Handler)\Ausgewählter Ordner". Jetzt kannst du eigentlich den Ordner löschen.

    Gruß, Manschula

    Manschula schrieb:

    Hey,

    das markierte Item in der Listbox beinhaltet den Namen des Ordners. Alle Ordner liegen im Pfad "C:\Stored(CC Handler)\". Also kannst du, mit der Combine-Methode beide Teile zu einem Pfad zusammensetzen:

    Visual Basic Quellcode

    1



    VB.NET-Quellcode

    1. Dim str_pfad As String = IO.Path.Combine("C:\Stored(CC Handler)\", CStr(lbStored.SelectedItem))



    Die Variable "str_pfad" beinhaltet jetzt den korrekten Pfad, also z.B.: "C:\Stored(CC Handler)\Ausgewählter Ordner". Jetzt kannst du eigentlich den Ordner löschen.

    Gruß, Manschula



    JAAAAAA das wars!
    Ich habe mich auch daran versucht nur war ich meilenweit von deiner Lösung entfernt :(
    Vielen vielen dank!

    LG

    Hablais