ListBox mit leeren Items alphabetisch sortieren

  • VB.NET

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

    ListBox mit leeren Items alphabetisch sortieren

    Hallo, ja ich weiß diese Frage schon sau oft gestellt wurde, aber da meine etwas anders ist frag ich einfach nochmal...
    Ich habe eine ListBox mit 20 beschriebenen Items und ca 180 leeren Items (diese müssen bleiben da diese später gefüllt werden) wenn ich jetzt mit der einfachsten Methode die Items sortieren will: Eigenschaften -> sorted -> true schiebt es die ganzen leeren Items nach oben was ja auch logisch ist.. ich hätte aber gern nur die beschreibenen oben alp. sortiert und die leeren einfach unten drunter.
    Jetzt hatte ich das schon mal mit dieser BubbleSortMethode probiert da kommt mir aber der Fehler "ArgumentOutOfRangeException wurde nicht behandelt
    InvalidArgument=Value mit dem Wert 1 ist für index ungültig.
    Parametername: index"

    Mein Quelltext

    VB.NET-Quellcode

    1. Dim schleife1 As Integer
    2. Dim schleife2 As Integer
    3. Dim hilfe As String
    4. cbmitarbeiter.Items.Clear()
    5. For schleife1 = 1 To 200
    6. If cbmitarbeiter.Items(schleife1) = "" Then
    7. For schleife2 = 1 To 200
    8. hilfe = cbmitarbeiter.Items(schleife2)
    9. cbmitarbeiter.Items(schleife2) = cbmitarbeiter.Items(schleife2 + 1)
    10. cbmitarbeiter.Items(schleife2 + 1) = hilfe
    11. Next
    12. Else
    13. If Asc(cbmitarbeiter.Items(schleife1)) = 13 Then
    14. For schleife2 = 1 To 200
    15. hilfe = cbmitarbeiter.Items(schleife2)
    16. cbmitarbeiter.Items(schleife2) = cbmitarbeiter.Items(schleife2 + 1)
    17. cbmitarbeiter.Items(schleife2 + 1) = hilfe
    18. Next
    19. End If
    20. End If
    21. Next


    Was mache ich falsch?
    Ich würde einen anderen Ansatz nehmen.
    Mach dir eine List(of T) und hau da deine Items rein welche du brauchst (auch die leeren)

    Anschließend kannst du die Listbox dann ja nur mit den befüllen welche einen Wert haben.
    Dann wird auch richtig sortiert.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Oder Du nimmst ein Dictionary(Of T, String), da kannst Du für die leeren Objekte Dummy-Namen einsetzen, wodurch Du auf das entsprechende Key-Value-Pair besser zugreifen kannst.
    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!