Wie kann ich eine Combobox sortieren

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von a.b_om.

    Wie kann ich eine Combobox sortieren

    Ich habe eine Combobox, in der alle Serielle Schnittstellen aufgelistet werden sollten. Diese Funktionalität habe ich.
    Jetzt möchte ich diese nur noch sortieren.
    Comboboxinhalte Reihenfolge:
    Vor dem Sortieren:
    COM3
    COM1
    COM9
    COM10

    Ich habe es versucht, es mit

    Quellcode

    1. Combobox.Sorted = True


    zu lösen, aber dann ist COM10 an der 2. Stelle.
    Wie kann ich das lösen, dass es so aussieht?
    COM1
    COM3
    COM9
    COM10

    *Thema verschoben - wurde im VBP Guide gepostet welcher 1. Falsch ist und 2. Freischaltepflichtig* ~NoFear23m

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

    Willkommen im Forum.
    1. Wie kommen die Einträge überhaupt in die ComboBox?
    2. Die Automatiksortierung ist richtig, weil es eine Textsortierung ist.
    3. Du könntest es so sortieren, dass Du die Zahlen extrahierst, sie in Integers umwandelst und auf dieser Grundlage sortierst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Quellcode

    1. For Each sp As String In My.Computer.Ports.SerialPortNames
    2. cmbComPort.Items.Add(sp)
    3. cmbComPort.Sorted = True
    4. Next


    So wird es eingefügt.
    Achtung, ich möchte kein ICompare gebrauchen.

    Ach sorry Nofear23m. Ich bin neu und wusste das nicht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „a.b_om“ ()

    VB.NET-Quellcode

    1. Private Sub btn_Click(sender As Object, e As RoutedEventArgs) Handles btn.Click
    2. Items.Sort(AddressOf StringINTComparer)
    3. For Each itm As String In Items
    4. Debug.WriteLine(itm)
    5. Next
    6. End Sub
    7. Private Function StringINTComparer(ByVal x As String, ByVal y As String) As Integer
    8. Dim parseX() As String = Split(x, "m")
    9. Dim parseY() As String = Split(y, "m")
    10. Return CInt(parseX.Last).CompareTo(CInt(parseY.Last))
    11. End Function


    (Items ist ne List(Of String))

    Nachtrag: da ich von MichaHo kürzlich von Linq erfahren habe und ich das ziemlich cool Finde hier noch ne schönere Variante =)

    VB.NET-Quellcode

    1. Items = Items.OrderBy(Function(q) Integer.Parse(q.Split("m").Last)).ToList



    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

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