Größe des Scrollbuttons in VScrollbar

  • VB.NET
  • .NET 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von drschef.

    Größe des Scrollbuttons in VScrollbar

    Ich benutze zum Bewegen einer Grafik in einer Form ein VScrollBar Control. Die VScollbar ist nur der Form zugeordnet und soll ein Objekt steuern, das höher als die Form ist. Das geschieht mit einem "Scrollbutton", der sich verschieben lässt und dabei das ValueChanged Event auslöst. Ich hoffe, die Bezeichnung "Scrollbutton ist korrekt oder zumindest verständlich. Zum Beispiel beim TreeView Control wird mit der Eigenschaft Scrollable ebenfalls eine Scrollbar eingeblendet. Die Länge dieses Buttons verändert sich dort im Verhältnis des angezeigten Teils der Daten und verschwindet automatisch, wenn alle alle Daten angezeigt werden.

    Bei der VScrollBar hat der Button eine feste Länge und ich habe bisher nicht heraus bekommen, wie man diese Länge im Verhältnis zum zu bewegenden Bereich steuern kann. Möglicherweise gibt es dafür eine Eigenschaft, die mir bisher entgangen ist. Oder wie könnte das gehen?
    @drschef Das Ding heißt Thumb.
    Mach Dir ne Form mit einer VScrollBar, zwei Buttons und zwei Labels:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. VScrollBar1.Maximum += 10
    3. Label1.Text = VScrollBar1.Maximum.ToString
    4. End Sub
    5. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    6. VScrollBar1.LargeChange += 10
    7. Label2.Text = VScrollBar1.LargeChange.ToString
    8. End Sub
    Klicke auf die Buttons, ziehe die Höhe der Form und beobachte die Größe des Thumbs.
    Mach Dir ggf. noch 2 Buttons, wo die Properties verkleinert werden.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Danke zunächst mal für die prompte Antwort. Nach Thumbs lässt sich nun auch besser suchen. Ich kannte die Bezeichnung nicht und bin vielleicht deshalb nicht fündig geworden.

    Mein Layout hat einen Split-Container mit Dock Left, in dessen rechtem Panel das oder die zu bewegenden Objekte liegen. Im Fenster ist
    eine VScrollBar mit Dock.Right eingebunden. Wie Du vorhergesagt hast, vergrößert sich der Button, wenn ich das Fenster aufziehe. Aber die Größe des Thumbs korreliert eben nicht mit der Objektgröße. Ich hätte gern, dass der Thumb über die volle Länge geht, wenn das Objekt genau in die Form hineinpasst und anteilig kleiner wird, wenn nur ein Bruchteil des Objekts in der Form zu sehen ist.

    Für heute mache ich aber erst mal Schluss und gehe das Problem morgen erst mal entsprechend Deinen Hinweisen an.
    Hallo EDR.

    Schon die Antwort von Rod hat meine nicht mehr ganz jungen grauen Zellen stimuliert. Nun bin ich noch Deiner Anregung gefolgt. Ich habe ein Testpanel mit Übergröße mit Grafik in eine Form eingebracht eingebaut. Der Form selbst habe ich die Eigenschaft Autscroll gegeben. Und sieh da die Scrollbar wird automatisch eingefügt. Man benötigt kein explizites Control mehr. Die Höhe des Thumbs wird automatisch an das Verhältnis Splitterpanel.height / Testpanel.height angepasst und das Testpanel wird bei Verschiebung des Thumbs automatisch im richtigen Sinne verschoben. Bei den Endlagen des Thumbs wird automatisch die Endlage des Panels eingenommen. Analog funktioniert die Sache auch mit dem Splitterpanel.

    Hier die Grafik:
    Endlage oben



    Endlage unten

    Damit dürfte mein Problem gelöst sein.

    Danke!