WinForms: HorizontalScroll setzt Balken automatisch zurück

  • Allgemein

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    WinForms: HorizontalScroll setzt Balken automatisch zurück

    Hi,

    Ich bastel derzeit an einem Steuerelement, auf dem ich ein Gitter zeichne (per GDI) und bin dabei eine Scroll-Funktion einzubauen.
    Dazu nutze ich die Scrollbars, die mit jedem UserControl mitgeliefert werden (in den Eigenschaften HorizontalScroll und VerticalScroll),
    allerdings immer wenn ich den Balken verschiebe, setzt er sich automatisch zurück.

    Weiß jemand wie ich das verhindern kann?

    LG, Trudi :)
    Pack eine PictureBox Deiner Größe in ein Panel. Gib dem Panel die Scrollbar und male in der PictureBox.
    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!
    Hi, das habe ich bereits gemacht, nur dass ich in ein UserControl zeichne und das sich in einem Panel befindet :)

    Funktioniert aber leider auch etwas unsauber, der zeigt z.B. den horizontalen Balken an, obwohl man noch gar nix verschieben kann. Wenn ich Morgen am Computer bin zeig ich mal was Code...

    Für mich sieht das alles etwas unsauber eingebaut aus, ich denke ich erstelle meine eigenen Scrollbars in dem Panel.

    Danke aber trotzdem.
    Stimme pinki zu.

    Weil das so zum schreien einfach ist hier eine SampleSolution

    Panel.Autoscroll = True, .AutoScrollMinSize = (300/300), und das "schwierigste" ist beim Ownerdrawing die AutoscrollPosition des Panels zu berücksichtigen:

    VB.NET-Quellcode

    1. Public Class frmOwnerDrawAutoScroll
    2. Private _rctCircle As New Rectangle(50, 50, 100, 100)
    3. Private Sub Canvas_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Canvas.Paint
    4. Dim rct = _rctCircle
    5. rct.Offset(Canvas.AutoScrollPosition)
    6. e.Graphics.DrawEllipse(Pens.Red, rct)
    7. End Sub
    8. End Class

    In .Net ist mit den ScrollableControls das Scroll-Problem also überaus elegant gelöst.
    Man muß sich nur von der Vorstellung verabschieden, es seien Scrollbars zuzufügen, iwie mit Werten einzustellen, und die würden mit iwas annerem kommunizieren und sowas.
    Diese Vorstellung ist Geschichte.
    Dateien

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()