Wie VScrollbar richtig ansteuern?

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Wie VScrollbar richtig ansteuern?

    Ich habe ein Problem mit dem VScrollBar.

    In meinem Projekt habe ich mir einen kleinen speziellen Editor gebastelt, welcher 28 Zeilen hat. Jede Zeile besteht aus einem Control, welches diverse andere Steuerelemente enthält, u.a. ne RichTextBox.
    Wenn ich meinen Editor mit Daten befülle (aktuell hat das Daten-Array nur 114 Einträge), dann kann ich über eine Tastenabfrage prima und schnell im Editor rauf und runter scrollen.

    Als nächstes wollte ich ein VScrollBar zusätzlich ansteuern, wenn ich durch den Editor scrolle, indem ich auf den MausWheel reagiere wenn der Fokus auf den Editorzeilen liegt, bzw. wenn ich die Pfeiltasten verwende.
    Das hatte auch schonmal geklappt, habe ich mir aktuell aber kaput gefummelt. ||

    Ich habe aber allgemein ein Problem mit dem Verständnis mit dem VScrollBar.

    Da ich 114 Einträge im Aray habe, habe ich das VScrollBar.Maximum auf 114 gesetzt. Ich bin mir aber nicht sicher ob das so richtig ist, wenn beim runterscrollen ist der Schiebebalken am Ende angekommen, obwohl noch neun weitere Einträge vorhanden sind.

    Außerdem wollte ich natürlich mit dem VScrollBar ein komplettes Scrollen über die Maus erreichen. Aber irgendwie scheitere ich an der Berechnung der Werte, also welcher Bereich vom Array im Editor sichtbar sein soll. Darin fließt auch ein in welcher Zeile gerade der Cursor steht, weil ich ja jederzeit wieder mit den Tasten arbeiten könnte usw.

    Jetzt bräuchte ich mal von euch einen kleinen Denkanstoß. :whistling:
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love:
    Bei 'ner Scrollbar entspricht das Maximum den gesamten Daten, und das LargeChange-Property entspricht den im Fenster sichtbaren Daten.

    Also wenn die Datenmenge sich ändert, aber auch wenn die Fenstergröße - in beiden Fällen ist was anzupassen.

    (Evtl. ist das Maximum aber auch GEsamtDAten - LargeChange.)
    @oobdoo Untersuchge folgenden Sachverhalt:
    Mach eine neue Form (am besten gleich ein kleines neues Projekt),
    zieh einen Button, eine VScrollBar und zwei Label auf die Form.
    Mit dem Button erhöhst Du das Maximum der VScrollBar um jeweils 10. Diesen Wert gibst Du in einem Label aus.
    Im Scroll-Event der VScrollBar gibst Du den Value der VScrollBar im anderen Label aus.
    Sieh Dir an, was da so ausgegeben wird, wenn Du scrollst und den Button drückst.
    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!
    @ErfinderDesRades Jou.

    oobdoo schrieb:

    Erklärungstext
    Du kannst diesen Properties Deine Werte zuweisen.
    Wähle sie so, dass das rauskommt, was der EDR geschrieben hat.
    Probierma das Slider-Control, da gibt es mit dem Maximum keine Probleme.
    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!

    ErfinderDesRades schrieb:

    Tja, da ist meine Erklärung besser, weil liefert einen zusätzlichen Aspekt.
    Nur vermute ich, du hast sie nicht verstanden.

    Wie kommst Du da drauf das ich etwas nicht verstanden habe? Ich wollte mit dem Bild nur auf die lustige Übersetzung hinweisen. ;)

    Den Rest muss ich noch ausprobieren. Bin halt nicht so schnell wie ihr mit dem Umsetzen.
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love:

    oobdoo schrieb:

    die lustige Übersetzung
    wurde von einem Automaten gemacht.
    Die originalen Englisch-Texte sind einmal so einfach gestrickt, dass sie ein Englisch-Anfänger relativ leicht erfassen kann
    und
    dass sie automatisch übersetzt werden können.
    Natürlich ist das keine Garantie, dass dafür der Literatur-Nobelpreis verliehen wird. ;)
    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!