Listbox Sortieren

  • VB.NET

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

    @Pixxxas Da müsstest Du Dir eine eigene ListBox mit Deinem Sortieralgorithmus schreiben, gugst Du hier.
    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!
    im Grunde hab ich ja ein Lösung;

    Das steht im Form Load Event, sortiert so wie ich gern möchte.

    VB.NET-Quellcode

    1. Label14.Text = "auftrag wählen..."
    2. Dim directory1 As New System.IO.DirectoryInfo("\\****")
    3. Dim Files1() As FileInfo = directory1.GetFiles
    4. Array.Sort(Files1, New Sorter)
    5. For Each file1 As System.IO.FileInfo In Files1
    6. If file1.Name <> "~*.*" And file1.Name <> "Thumbs.db" Then
    7. ListBox2.Items.Add(file1.Name)
    8. End If
    9. ListBox2.SelectedIndex = 0
    10. Next


    mache ich aber den selben Code in ein Button, lädt er die liste nicht mehr.


    Pixxxas schrieb:

    VB.NET-Quellcode

    1. Array.Sort(Files1, New Sorter)
    Poste mal den Sorter
    ======================

    VB.NET-Quellcode

    1. Array.Sort(Files1, New Sorter())
    Diese Zeile wirft eine Exception, die Form_Load ignoriert die und macht einfach da ein Return.
    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!

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

    und wie kann ich das auf mein Button anwenden?

    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
    @Pixxxas Probier mal dies, 2 Button, 2 Sortierungen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. ListBox2.Items.Clear()
    5. Dim directory1 As New System.IO.DirectoryInfo("c:\Temp")
    6. Dim Files1() As FileInfo = directory1.GetFiles
    7. Array.Sort(Files1, New Sorter(1))
    8. For Each file1 As System.IO.FileInfo In Files1
    9. If file1.Name <> "~*.*" And file1.Name <> "Thumbs.db" Then
    10. ListBox2.Items.Add(file1.Name)
    11. End If
    12. Next
    13. ListBox2.SelectedIndex = 0
    14. End Sub
    15. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    16. ListBox2.Items.Clear()
    17. Dim directory1 As New System.IO.DirectoryInfo("c:\Temp")
    18. Dim Files1() As FileInfo = directory1.GetFiles
    19. Array.Sort(Files1, New Sorter(-1))
    20. For Each file1 As System.IO.FileInfo In Files1
    21. If file1.Name <> "~*.*" And file1.Name <> "Thumbs.db" Then
    22. ListBox2.Items.Add(file1.Name)
    23. End If
    24. Next
    25. ListBox2.SelectedIndex = 0
    26. End Sub
    27. Public Class Sorter
    28. Implements IComparer
    29. Private direction As Integer
    30. Public Sub New(dir As Integer)
    31. Me.direction = dir
    32. End Sub
    33. Public Function CompareDesc(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
    34. Dim F1 As FileInfo = DirectCast(x, FileInfo)
    35. Dim F2 As FileInfo = DirectCast(y, FileInfo)
    36. Return Me.direction * DateTime.Compare(F2.LastWriteTime, F1.LastWriteTime)
    37. End Function
    38. End Class
    39. End Class
    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!
    Danke dir, Funktioniert mit;

    VB.NET-Quellcode

    1. ListBox2.Items.Clear()
    2. Dim directory1 As New System.IO.DirectoryInfo("\\internal.novero.com\dab\Production\SMD\Ablage\Bereitstellung-Ablage")
    3. Dim Files1() As FileInfo = directory1.GetFiles
    4. Array.Sort(Files1, New Sorter2(1))
    5. For Each file1 As System.IO.FileInfo In Files1
    6. If file1.Name <> "~*.*" And file1.Name <> "Thumbs.db" Then
    7. ListBox2.Items.Add(file1.Name)
    8. End If
    9. Next
    10. ListBox2.SelectedIndex = 0