Items in einer ListBox "richtig" sortieren

  • VB.NET

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

    Items in einer ListBox "richtig" sortieren

    Hi

    Ich hab ein Programm gebaut das Bilder hintereinander abspielen kann, so eine Art "Diashow". Jetzt hab ich eine Frage: Ich speichere alle Bilder mit dem Dateipfad in einer Listbox und wenn die Diashow gestartet wird geht ein Timer die Listbox durch und das Bild der Diashow ist dann das ausgewählte Bild der ListBox. Meine Frage ist jetzt wenn ich alle Dateien aus einem Ordner in eine Listbox lade (und wenn wir annehmen das der Ordner 10 Bilder enthält) sortiert die VB die Items so "1, 10, 2, 3, 4, 5, 6, 7, 8, 9," ich hätte aber gerne das sie richtige sortiert werden wie "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"

    Gibt es da irgendeine Möglichkeit?
    Nimm erstmal eine List, in welche du die Pfade reinlädst, diese legst du dann als DataSource für die ListBox fest.
    Zu deinem Problem: Das mit der Sortierung liegt daran, dass eine alphabetische Sortierungsmethode benutzt wird, was du suchst, ist eine numerische.

    PhoenixBlaster schrieb:

    Gibt es da irgendeine Möglichkeit?
    Klar.
    Speichere die Daten in einer List(Of FileInfo) und weise diese Deiner ListBox als DataSource zu.
    Die List(Of ...) kannst Du sortieren wie immer Du es willst.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Schau mal das hier. Vieles richtig, manches falsch ;)

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Public l As New List(Of System.IO.FileInfo)
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. l = New System.IO.DirectoryInfo("C:\").GetFiles().ToList()
    6. l.Sort(Function(s1, s2) s1.Name.ToLower().CompareTo(s2.Name.ToLower()))
    7. End Sub
    8. End Class