Die in einer ListBox angezeiten Dateien löschen

  • .NET 4.5
  • VB.NET

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 86 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaHo.

    knuepel schrieb:

    Im heutigen ersten Beitrag habe ich es gemacht, es geht einfach nicht.

    Was genau bedeutet das?

    Ich habe unten stehenden Code getestet, läuft ohne Probleme.

    VB.NET-Quellcode

    1. Private Sub LoadFolderContent(path As String)
    2. Dim di = New DirectoryInfo(path)
    3. If di.Exists Then
    4. ListBox1.Items.Clear()
    5. ListBox1.Items.AddRange(di.GetFiles())
    6. ListBox1.DisplayMember = "Name"
    7. End If
    8. End Sub

    Hier werden alle Dateien aufgelistet, die im gewählten Ordner (z.B: C:\tmp) drin sind.

    Willst du jedoch auch die Dateien auflisten die sich in irgendwelchen Unterordnern (z.B: C:\tmp\bilder) befinden,
    musst du di.GetFiles("*", SearchOption.AllDirectories) machen.

    Was genau soll denn passieren wenn ich in der Combobox was auswähle?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hi,
    damit bietest Du dem Anwedner, einen Pfad raus zu suchen bzw. einen bestimmten Ordner auszuwählen.

    Probier mal dies (funktioniert bei mir bestens):

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Source() As DirectoryInfo = New DirectoryInfo("F:\").GetDirectories
    4. Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged
    5. LoadFolderContent(ComboBox1.SelectedValue.ToString())
    6. End Sub
    7. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. ComboBox1.DataSource = Source
    9. ComboBox1.DisplayMember = "Name"
    10. ComboBox1.ValueMember = "FullName"
    11. End Sub
    12. Private Sub LoadFolderContent(path As String)
    13. Dim di = New DirectoryInfo(path)
    14. If di.Exists Then
    15. ListBox1.Items.Clear()
    16. ListBox1.Items.AddRange(di.GetFiles())
    17. ListBox1.DisplayMember = "Name"
    18. End If
    19. End Sub
    VB.NET: 3%


    Projects: pasGen, Snipps
    Homepage: mhoapps.com
    Das läuft perfekt,vielen Dank für die Hilfe. Hat etwas gedauert, ich wollte es nicht nur kopieren sondern auch verstehen. Deshalb habe ich noch etwas gebastelt und ausprobiert.

    ist es eigentlich möglich die ListBox automatisch- oder oder mit der Funktion Timer zu aktualisieren?. Wenn der Ordner in der ComboBox ausgewählt ist, und anschließend etwas in den Ordner eingefügt wird, wird es in der ListBox nicht angezeigt.
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(
    Sorry, hab meinen Post oben nachträglich Editiert.
    Mit dem Timer.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hat geklappt, danke für den Tip mit dem Timer.

    nun funktioniert meine Löschfunktion nicht mehr. Kannst du mir sagen warum?
    Bei Button druck wurde der in der ComboBox ausgewählter Unterordner geleert. Die darin befindlichen Dateien wurden gelöscht.

    VB.NET-Quellcode

    1. ​Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Try
    3. My.Computer.FileSystem.DeleteFile("F:\Basis" & ComboBox1.SelectedValue.ToString())
    4. Catch ex As Exception
    5. MsgBox("Es ist ein Fehler aufgetreten !", MsgBoxStyle.Critical, "Fehler")
    6. End Try
    7. End Sub
    8. End Class
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(
    Schau dir an was in ComboBox1.SelectedValue steht.

    Der My.Computer Namespace ist ein "böser" Namespace, bitte nutze die aktuelle Alternative System.IO.

    Dort gibt es dann File.Delete(sFile As String).

    Was willst du denn löschen, einen leeren Ordner, eine Datei, einen Ordner inkl. Inhalt?

    Edit: Bitte benenne deine Controls gescheit, das haben die verdient:-) Button1 => cmdDateiLoeschen
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

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

    Ich möchte nur die Dateien in den ausgewählten Unterordner löschen, die Auswahl sollte über die ComboBox laufen (Test1 oder Test2).

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For Each file In Directory.GetFiles("F:\Basis\Test1")
    IO.File.Delete(file)
    Next

    das habe ich auch versucht

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
    My.Computer.FileSystem.DeleteFile("F:\" & ListBox1.Text)
    Catch ex As Exception
    MsgBox("Es ist ein Fehler aufgetreten", MsgBoxStyle.Critical, "Error")

    End Try
    End Sub
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(

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

    Und das geht nicht, macht nicht das was du möchtest oder wo genau kommst du nicht weiter?

    Lies mal hier was du alles an GetFiles() übergeben kannst:
    msdn.microsoft.com/de-de/library/4cyf24ss(v=vs.110).aspx

    Edit: @knuepel mach Feierabend. Das kriegst du morgen mit klarem Verstand sicher hin :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

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

    Habe es hin bekommen 8o , Danke für eure Hilfe.

    jetzt ist mir noch ein kleines Future eingefallen, ich hoffe ihr könnt mir dabei auch helfen.

    in der ListBox werden ja die Dateien, die sich in den Unterordner als txt angezeigt. Nun möchte ich eine Datei per MouseDoubleClick öffnen.
    Das habe ich versucht


    Private Sub ListBox1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseDoubleClick
    If ListBox.SelectedIndex <> -1 Then
    Try
    Process.Start(foundFiles.Item(ListBox1.SelectedItem))
    Catch ex As Exception
    MsgBox(ex.Message, vbCritical)
    End Try

    End If
    End Sub
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(

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

    Mich tät das Ergebnis auch schwer Interessieren.

    Das müsste reichen um die Datei zu öffnen:
    Process.Start(ListBox1.SelectedItem)

    Bitte lies dich hier mal ein:
    -> TryCatch ist ein heißes Eisen
    -> Debuggen, Fehler finden und beseitigen
    Vor allem der zweite Link ist sehr wichtig, das hätte dir gestern etliche Nerven gespart.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @knuepel
    Process.Start(foundFiles.Item(ListBox1.SelectedItem))
    Von welchem Typ ist denn foundFiles? Ich vermute mal das foundFiles.Item() einen Indexer erwartet kein Object. Also vermutlich so: Process.Start(foundFiles.Item(ListBox1.SelectedIndex))

    mrMo schrieb:

    Das müsste reichen um die Datei zu öffnen:

    Nicht ganz, guck dir mal die Überladungen der Methode .Start() an, .SelectedItem ist vom Type Object.

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

    @Fakiz Ja richtig, da war ich wohl etwas schlampig heute Morgen :)

    Dann müsste Process.Start(ListBox1.SelectedItem.ToString()) funktionieren, oder irre ich mich?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hallo zusammen und einen schönen Sonntag euch,

    ich habe jetzt folgendes geändert:
    Process.Start(foundFiles.Item(ListBox1.SelectedIndex))

    Nun bekomme ich folgende Fehlermeldung aufgrund einer Schutzstufe :(

    Fehler 1 "foundFiles" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. C:\Users\Desktop\07.01.2016\WindowsApplication7\WindowsApplication7\Form1.vb 37 31 WindowsApplication7
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(
    Was genau steht in deiner ListBox drin? Bzw. welchen Wert erhälst du, wenn du dir ListBox1.SelectedItem.ToString() anschaust?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Bei Doppelklick kommt die Meldung "das System kann die Datei nicht finden"


    ich habe diese Varianten ausprobiert
    1. Process.Start(ListBox1.SelectedIndex)
    2. Process.Start("F:\" & ListBox1.SelectedIndex)
    3. Process.Start(ListBox1.ListBox1.SelectedItem.ToString())
    4. Process.Start("F:\" & ListBox1.ListBox1.SelectedItem.ToString())
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(
    Aber was steht in der Listbox? Der Dateiname, Pfad, Katzenpo...?

    Du musst doch wissen welchen Wert du an Process.Start() übergibst und was diese Methode braucht um zu funktionieren.

    Weißt du wie man den Debugger und VS allgemein nutzt?
    Debuggen, Fehler finden und beseitigen
    VisualStudio richtig nutzen (Google ist nicht deine Mami)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen