Scrollposition beim Splicontainer vorgeben bzw. merken

  • VB.NET
  • .NET 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Scrollposition beim Splicontainer vorgeben bzw. merken

    Habe kürzlich das Thema "Größe des Scrollbuttons in VScrollbar" gestartet und über das Forum lösen können. Nun taucht ein neues Problem auf. Die Scrollbar ist Bestandteil eines Splitcontainers mit der Eigenschaft Autoscroll = true. Nun habe ich vereinfacht 2 Buttons angelegt, einen der sich die aktuelle Scrollposition merken und einen, der sie identisch wiederherstellen soll, nachdem der Thumbbutton in eine neue Position gebracht wurde. Sozusagen die UnDo Funktion beim Positionieren.

    Mein Ansatz:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Scrollpos = SC.Panel2.AutoScrollPosition 'Aktuelle Scrollposition merken
    3. End Sub
    4. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    5. SC.Panel2.AutoScrollPosition = Scrollpos 'Aktuelle Scrollposition setzen
    6. End Sub​


    VB akzeptiert zwar diese Notation, führt sie aber nicht aus. D.h. insbesondere der Befehl

    Quellcode

    1. ​SC.Panel2.AutoScrollPosition = Scrollpos 'Aktuelle Scrollposition setzen

    wird durchlaufen, aber die linke Seite der Zuweisung bleibt unverändert, d.h. die Scroll-Position verändert sich nicht. 'Scrollpos' ist als Point definiert.

    Die einfache Zuweisung

    Quellcode

    1. ​ SC.Panel2.AutoScrollPosition.Y -= 100

    wird bereits vom Compiler abgelehnt. Dabei steht in der Hilfe "Ruft die Position ab oder legt sie fest". Und dann etwas widersprüchlich unten drunter "Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung verwendet werden".

    Was kann ich tun, um zwischen "gemerkten" Positionen hin und her zu springen?
    Hallo,

    Das isses wirklich! Ich habe nach der Enttäuschung erst mal eine kleine Pause gebraucht. Jetzt schau ich rein und finde da die fertige und funktionierende Lösung. Mein Fehler war sicher, dass die AutoScrollPosition nur negative Werte verträgt, was mit meiner Notation gar nicht ging. Aber offensichtlich auch nicht mit der ausprobierten und scheinbar äquivalenten Variante

    Quellcode

    1. SC.Panel2.AutoScrollPosition.Y -= 100


    Vielen Dank - Erfinder des Rades.

    drschef schrieb:

    Vielen Dank - Erfinder des Rades.
    Dafür gibt es den Hilfreich-Button :!:
    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!