Dateien aus Ordner in Listbox

  • VB.NET

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

    Dateien aus Ordner in Listbox

    So, kaum ist das eine Problem gelöst, funktioniert schon wieder was nicht...

    Ich habe einen Ordner und es sollen alle Dateien von dem Ordner in einer Listbox wiedergegeben werden. Sobald eine Datei gelöscht wird, soll diese
    auch von der Listbox verschwinden. Also die Listbox mit den Dateien soll immer aktuell bleiben.

    Beispiel: Ich habe im Ordner 5 Dateien -> dann sollen in der Listbox diese 5 Dateien angezeigt werden. Lösche ich jedoch eine Datei manuell von dem Ordner, soll diese auch wieder in
    der Listbox verschwinden.

    Da dacht ich mir, ich benutze einen Timer, um alles aktuell zu halten....

    For Each dateien As String In My.Computer.FileSystem.GetFiles(pfad)
    Me.ListBox1.Items.Add(dateien) Next


    Eig. ist es logisch, dass dies nicht den Effekt erzielt, den ich mir erwünscht habe, da er dann alle 0,5 Sekunden (timer) einen neuen Listbox Eintrag erstellt.
    Und ich will ja, dass nur diese Dateien angezeigt werden die im Ordner sind, und das auch nur 1 mal und nicht alle 0,5 sek. nochmal -.-

    Ich bekomm es einfach nicht hin.

    Gruß, Markus
    @ILLEX bitte verwende dazu keinen Timer sondern FileSystemWatcher
    dort kannst du dann passen die Events nutze .Created .Deleted oder .Renamed um die List box Einträge anzupassen

    LG Ruerte
    Trainii: 5.0%
    Abstandshalter
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    @ILLEX Nimm besser Methoden aus dem IO-Namespace:

    VB.NET-Quellcode

    1. Private Sub UpdateFileist()
    2. Me.ListBox1.Items.Clear()
    3. Dim fi() = New IO.DirectoryInfo("c:\Temp").GetFiles("*.*", IO.SearchOption.TopDirectoryOnly)
    4. Me.ListBox1.Items.AddRange(fi)
    5. 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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @RodFromGermany ich finde es etwas unnötig bei jeder Änderung das komplette Verzeichnis neu auszulesen (#Edit: klar er hat aktuell nur 5 Dateien da ist das wurscht aber was wenn er dies mal für 1000+ nutzen will^^)
    und würde es deshalb so lösen (Leider wüsste ich nicht wie man beim .Renamed dies anders lösen sollte da e.Name nur den neun Namen wiedergibt)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim workPath = "C:\Users\Ruerte\Desktop"
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. UpdateAll()
    5. End Sub
    6. Private Sub FileSystemWatcher1_Renamed(sender As Object, e As IO.FileSystemEventArgs) Handles FileSystemWatcher1.Renamed
    7. UpdateAll()
    8. End Sub
    9. Private Sub FileSystemWatcher1_Deleted(sender As Object, e As IO.FileSystemEventArgs) Handles FileSystemWatcher1.Deleted
    10. ListBox1.Items.Remove(e.Name)
    11. End Sub
    12. Private Sub FileSystemWatcher1_Created(sender As Object, e As IO.FileSystemEventArgs) Handles FileSystemWatcher1.Created
    13. ListBox1.Items.Add(e.Name)
    14. End Sub
    15. Private Sub UpdateAll()
    16. ListBox1.Items.Clear()
    17. Dim fi() = New IO.DirectoryInfo(workPath).GetFiles("*.*", IO.SearchOption.TopDirectoryOnly)
    18. Me.ListBox1.Items.AddRange(fi)
    19. End Sub
    20. End Class


    LG Ruerte
    Trainii: 5.0%
    Abstandshalter
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    ILLEX schrieb:

    anzeigen lassen
    So einfach geht das auf diesem Weg nicht, da müsstest Du alle Einträge einzeln anfassen.
    Sieh Dir allerdings mal dies an:

    VB.NET-Quellcode

    1. Me.ListBox1.DisplayMember = "Name"
    2. 'Me.ListBox1.DisplayMember = "FullName"

    --------------------

    Ruerte schrieb:

    Verzeichnis neu auszulesen

    ILLEX schrieb:

    Ich habe im Ordner 5 Dateien




    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).
    VB-Fragen über PN / Konversation werden ignoriert!