Listboxeinträge sortieren

  • VB.NET

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

    Listboxeinträge sortieren

    Hi,

    ich habe ein kleines Problem:

    Ich habe eine ListBox mit diversen vordeffinierten Werten/ Einträgen. jetzt möchte ich gerne die Einträge dynamisch mittels eines Buttons um eine Stelle nach oben, bzw unten verschieben ( also 2 Buttons ) .

    Weis nicht genau wie ich das machen soll.

    Ich habe schon etwas mit dem Index eines Elements welches ich selektiert habe probiert, das klappt aber nicht so wie gewünscht.

    Kann mir villeicht jeman helfen?
    So ähnlich müsste es gehen:

    VB.NET-Quellcode

    1. Private Sub nachoben_Click()
    2. Dim Puffer As String, n As Integer
    3. With ListBox1
    4. n = .ListIndex
    5. If n > 0 Then
    6. Puffer = .List(n - 1)
    7. .List(n - 1) = .List(n)
    8. .List(n) = Puffer
    9. .ListIndex = n - 1
    10. End If
    11. End With
    12. End Sub
    13. Private Sub nachunten_Click()
    14. Dim Puffer As String, n As Integer
    15. With ListBox1
    16. n = .ListIndex
    17. If n >= 0 And n < .ListCount - 1 Then
    18. Puffer = .List(n + 1)
    19. .List(n + 1) = .List(n)
    20. .List(n) = Puffer
    21. .ListIndex = n + 1
    22. End If
    23. End With
    24. End Sub


    Das ist zwar VBA-Code, aber ich denke das Prinzip ist klar.
    Also das ist zum Direktverschieben:

    Nach oben (direkt nach Public Class...)

    Quellcode

    1. Dim move As Boolean
    2. Dim eintrag As String


    Und dann folgenden Hauptcode:

    Quellcode

    1. Private Sub ListBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
    2. eintrag = ListBox1.SelectedItem
    3. move = True
    4. End Sub
    5. Private Sub ListBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseUp
    6. Dim pos As Integer = Me.ListBox1.IndexFromPoint(e.Location)
    7. If pos = "-1" Then
    8. Else
    9. Try
    10. If move = True Then
    11. ListBox1.Items.Remove(eintrag)
    12. ListBox1.Items.Insert(pos, eintrag)
    13. move = False
    14. ListBox1.SelectedIndex = pos
    15. End If
    16. Catch
    17. End Try
    18. End If