ListView - Über einen Button scrollen

  • VB.NET

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

    ListView - Über einen Button scrollen

    Hallo zusammen,

    ich bin dabei eine Anwendung zu schreiben, die über einen Touchscreen bedienbar sein soll.
    In einer meiner Forms habe ich ein ListView Control, in dem viele Elemente angezeigt werden.

    Das bedeutet auch, dass der Scrobblaklen ziemlich klein werden kann.
    Ist es mögloch, dass Scrollen über Buttons zu Steuern?

    Ich stelle mir das Ergebnis so vor:

    Ich habe 4 Buttons, jeweils zwei zum hoch scrollen und zum runter scrollen.
    Jeweils einer wiederum soll große und der andere kleine Sprünge machen.

    Ich hab mich bei MSDN mit dem ListView beschäftigt, jedoch springt mir nicht mal ein Lösungsansatz ins Auge!

    Danke schon mal für eure Mühe :)

    Gruß Mechatron.
    Danke [font='&quot']jvbsl[/font]!

    Aber ich hab, das jetzt so hingebogen:

    VB.NET-Quellcode

    1. Private position As Integer = 0
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. ListScroll(-10)
    4. End Sub
    5. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    6. ListScroll(-1)
    7. End Sub
    8. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    9. ListScroll(1)
    10. End Sub
    11. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    12. ListScroll(10)
    13. End Sub
    14. Private Sub ListScroll(ByVal value As Integer)
    15. If (value + position) >= 0 Then
    16. ListView1.TopItem = ListView1.Items(position + value)
    17. position += value
    18. End If
    19. If (value + position) < 0 Then
    20. ListView1.TopItem = ListView1.Items(0)
    21. position = 0
    22. End If
    23. End Sub


    Funktioniert auch super, bis auf die Tatsache, dass eine "ArgumentOutOfRangeException" geworfen wird, wenn ich auf einen Wert für "position + value" komme, der größer ist, als die Anzahl der Elemente in dem ListView. Gibt es auch eine Möglichkeit, den Index des letzten Elementes abzufragen?
    oder das über Umwege mit einer Liste zu machen??

    Gruß Mechatron

    Meine Lösung

    So, jetzt hab ich mal ein paar Minuten...
    also:

    Meine Buttons:


    VB.NET-Quellcode

    1. Private Sub bup1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bup1.Click
    2. Scroll(-1)
    3. End Sub
    4. Private Sub bdown1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bdown1.Click
    5. Scroll(1)
    6. End Sub


    Man kann hier selbstverständlich auch andere Parameter übergeben. je nach dem wie weit man mit einem Click-Event Scrollen will.

    VB.NET-Quellcode

    1. Private Sub Scroll(ByVal value As Integer)
    2. For i As Integer = 0 To ListView1.Items.Count - 1
    3. ListView1.Items(i).BackColor = Color.White
    4. Next
    5. If (value + Position) >= ListView1.Items.Count Then
    6. ListView1.TopItem = ListView1.Items(ListView1.Items.Count - 1)
    7. Position = ListView1.Items.Count - 1
    8. ListView1.Items(Position).BackColor = Color.Blue
    9. Exit Sub
    10. End If
    11. If ((value + Position) >= 0) = True And ((value + Position) > ListView1.Items.Count) = False Then
    12. ListView1.TopItem = ListView1.Items(Position + value)
    13. Position += value
    14. ListView1.Items(Position).BackColor = Color.LightBlue
    15. Exit Sub
    16. End If
    17. If (value + Position) < 0 Then
    18. ListView1.TopItem = ListView1.Items(0)
    19. Position = 0
    20. ListView1.Items(Position).BackColor = Color.LightBlue
    21. Exit Sub
    22. End Sub


    Die Farbe dient hier dazu, dass man den Anwender erkennen lassen sollte, welcher Eintrag grad aktiv ist. Sonst sorgt das für Verwirrung, wenn man "scheinbar" an unterster stelle ist.

    Es ist eine Lösung von vielen denke ich.

    Gruß Mechatron.