Listbox + Ordnerinhalt - Aber Sortiert nach Erstellungsdatum Datei

  • VB.NET

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

    Listbox + Ordnerinhalt - Aber Sortiert nach Erstellungsdatum Datei

    Hallo,

    suche nach einer Möglichkeit, die Ausgabe eines Ordnerinhalts (nur Dateien - keine Ordner) sortiert auszugeben.

    Nicht nur sortiert sonern das neuerste oben in der Listbox, älterstes unten - sortiert nach änderungsdatum der Datei.

    Ebenso, soll er die oberste bzw. die aktuellste Datei gleich makieren.

    Hab schon viel gegoogelt aber da nix passendes gefunden...

    Könnt' ma Ihr weiterhelfen?

    lris08


    PS: Mein bisheriger Code:

    VB.NET-Quellcode

    1. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim directory As New System.IO.DirectoryInfo("X:\Privatakten")
    3. For Each file1 As System.IO.FileInfo In directory.GetFiles
    4. If file1.Name <> "~*.*" And file1.Name <> "Thumbs.db" Then
    5. ListBox1.Items.Add(file1.Name)
    6. End If
    7. Next
    8. End Sub
    file1.Name <> "~*.*"
    wird wohl kaum funktionieren, da wirst du wohl mit Funktionen wie Contains und IndexOf arbeiten müssen...
    ich würde mir für den Array, welchen directory.GetFiles zurückliefert eine IComparer Klasse erstellen(wie gibt es mit diesem Stichwort sicherlich viel im Internet), anschließend über Array.Sort die Liste sortieren und erst anschließend die Items zur ListBox hinzufügen...
    Das erste Item markieren sollte dann aber weniger das Problem sein(IntelliSense wird sicher helfen)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das hab ich jetzt gerade aber selber kürzer hinbekommen... kürzerer Code :)

    VB.NET-Quellcode

    1. Public Class Sorter
    2. Implements IComparer
    3. Public Function CompareDesc(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
    4. Dim F1 As FileInfo = DirectCast(x, FileInfo)
    5. Dim F2 As FileInfo = DirectCast(y, FileInfo)
    6. CompareDesc = DateTime.Compare(F2.LastWriteTime, F1.LastWriteTime)
    7. End Function
    8. End Class
    9. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. Dim directory As New System.IO.DirectoryInfo("X:\Privatakten")
    11. Dim Files() As FileInfo = directory.GetFiles
    12. Array.Sort(Files, New Sorter)
    13. For Each file1 As System.IO.FileInfo In Files
    14. If file1.Name <> "~*.*" And file1.Name <> "Thumbs.db" Then
    15. ListBox1.Items.Add(file1.FullName)
    16. End If
    17. Next
    18. End Sub


    funktioniert...

    suche nur noch die makiermöglichkeit

    PS auch gefunden : Listbox1.SelectedIndex = 1

    Somit alles erledigt :)

    Danke aber...
    das weiß ich, jedoch darf kein "*" in einem Dateinamen enthalten sein, also müsste sie das über Stringoperationen wie StartsWith und IndexOf überprüfen,...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---