Panel: Scrollbar über Buttons ohne Scrollleiste/Autoscroll

  • VB.NET

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

    Panel: Scrollbar über Buttons ohne Scrollleiste/Autoscroll

    Guten Tag,

    ich hänge gerade an einer Stelle fest an der ich nicht weiter komme. (Die Suche war bisher erfolglos)

    Zustand:
    Ich habe ein Panel auf dem ich Controls zur Laufzeit hinzufüge die nebeneinander positioniert erstellt werden.
    Genauer genommen ist es für Tabs/Reiter gedacht. (siehe Anhang)

    Wenn diese Controls dann über den Rand des Panels hinaus ragen, dann wäre es möglich mittels Scrollbalken, sofern man "AutoScroll" aktiviert hat, diese horizontal zu verschieben. Das aber ist optisch nicht zu gebrauchen.

    Ich müsste diese Sache nun "ohne" Scrollbalken gelöst bekommen.
    Ich nutze dafür Knöpfe da der Scrollbalken die Optik und den Platz zerstört.

    Nun sind eben 2 Fragen.

    1) Wie bekomme ich das Control bewegt ohne Scrollbalken
    2) Wie bewege ich es am elegantesten per Knopfdruck. Im speziellen soll es per "gehaltenem" Knopf scrollen so lange dieser gedrückt gehalten wird.

    Der bisherige Code zum Scrollen per Knopfdruck sieht wie folgt aus.

    VB.NET-Quellcode

    1. pnTabList.HorizontalScroll.Value = pnTabList.HorizontalScroll.Value + 2

    Dies aber scheint weder elegant zu sein, noch funktioniert es ohne AutoScroll.


    Ich wäre über jegliche Ansätze und Problemlösungen - ggf. auch ganz andere Wege - sehr dankbar.
    Bilder
    • tablist.png

      3,67 kB, 988×45, 304 mal angesehen
    Hallo,

    ich komme nach wie vor nicht weiter bei dem Problem.
    Folgendes habe ich bereits geschaffen das mir den Scrollbalken ein wenig bewegt und die Scrollbalken "ab und zu" entfernt.
    Das aber dann mit einem flackern weil der Scrollbalken jedes mal entfernt werden muss.
    So scheint es nicht zu funktionieren.

    VB.NET-Quellcode

    1. Public horiz As Integer
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. horiz = horiz + 5
    4. Dim DeltaX As Integer = (pnTabList.AutoScrollPosition.X + horiz)
    5. Dim DeltaY As Integer = (pnTabList.AutoScrollPosition.Y)
    6. pnTabList.AutoScrollPosition = New Drawing.Point(DeltaX, DeltaY)
    7. ShowScrollBar(CInt(pnTabList.Handle), 3, 0)
    8. End Sub



    Hat sonst keiner Ideen und Ansätze?
    Vielen Dank

    m9898 schrieb:

    Du brauchst einfach nur einen Timer und das Button_MouseDown und das Button_MouseUp event.
    Dann kannst du das so lange Scrollen lassen, wie der Button gedr[ckt ist.
    Fertigen Code brauchst du aber hoffentlich nicht, oder?

    Hallo,

    nein für diesen Punkt der Frage nicht. Deine Anweisungen dafür sollten reichen, danke dafür.

    Nur das Problem mit den Scrollbalken ist ja leider noch immer verfügbar, erst wenn das gelöst ist macht es Sinn sich dieser Sache mit dem Button anzunehmen.
    Danke dir :)

    SystemUnknow schrieb:


    Hallo,

    der zweite Link war der selbe Thread von mir - nur in einem anderen Forum.
    Dort habe ich aber meine Lösung gefunden.

    Und zwar habe ich 2 Panels übereinander platziert und diese mittels left (auch negativ Werte) in der Positionierung verändert.
    Somit verschwinden die Elemente im Übergeordneten Panel.

    So - und mit einiges an Quellcode und Anpassungen mehr - hat es dann endlich ordentlich funktioniert.
    Ich bedanke mich bei allen für die gute Hilfe.