Eigene Scrollbars

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

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

    Eigene Scrollbars

    Sehr geehrte Community,

    da ich gerne mit GDI arbeite und für meine neue Anwendung ein komplett neues Design aufsetze, möchte ich gerne auch die Scrollbars in diversen Windows.Forms.Panel's anders zeichnen, da das Windows-Standard nicht zum Theme passt.

    Ich habe bereits versucht, über das Event "Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)" die Scrollbar zu überzeichnen - aus irgendeinem Grund zeichnet sich diese aber später trotzdem noch darüber...

    Gibt es eine Möglichkeit, die Scrollbar in einem Panel zu überzeichnen? Wenn ja, wie stelle ich das am Besten an?

    Grüße
    Auf der Suche nach Coding-Kursen auf Lence.at
    Das Problem bei Scrollbars ist dass sie von Windows selbst gezeichnet werden, kannst also nicht drüber zeichnen (hier nochmal genauer: hier). Das heißt wiederum du musst dir 'n eigenes Control machen. Ist schwer sowas zu machen, aber du kannst hier von den Themes was rausholen und dran rumarbeiten: hier. Ich hab das auch mal gemacht, kann es ja mal anhängen, aber ich denk' nicht dass du verstehen wirst was ich da gemacht hab, ich tu es manchmal selbst nicht :D
    Dateien
    das is natürlich momentan ein bissl blöd... eventuell finde ich eine Möglichkeit, die Scrollbar direkt in den Panel zu zeichnen, anstatt mit einem zusätzlichem Control zu hantieren.

    Trotzdem vielen Dank!
    Auf der Suche nach Coding-Kursen auf Lence.at
    Klar, statt ein Control zu zeichnen kannst du das selbe auch direkt in das Panel zeichnen. Die ganzen Berechnungen bleiben trotzdem die selben und die sind ja die Schwierigkeit :)
    Ist mir schon klar :)

    Eine Frage hätt ich noch: wenn ich das ganze direkt ins Panel zeichne, dann kann die Scrollbar von den einzelnen Controls überzeichnet werden - dann ich irgendwie den Bereich, in dem die einzelnen Controls im Panels anzeige, einschränken? Auch wenn diese Gedockt sind?

    Oder ist es besser, doch ein eigenes Control zu machen und dieses rechts docken und im Constructor hinzuzufügen

    PS: eine Frage noch: wofür steht in deinem Code die Variable "thumby"?
    Auf der Suche nach Coding-Kursen auf Lence.at

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KingTimon“ ()

    Das weiß ich nicht, aber ich denke ein eigenes Control wäre schon besser. Thumby speichert die höhe auf Y-Richtung des Thumbs, der Thumb ist der Schieberegler der Scrollbar.
    bin gerade daraufgekommen, dass das mit dem Schieberegler direkt im Panel nicht möglich ist, da auch der Schieberegler selbst die gesamte Scrollbare Area ausnützt...
    Auf der Suche nach Coding-Kursen auf Lence.at
    @KingTimon Wenn Du 2 Panels ineinander legst, kannst Du zwischen beiden die Scrollbars positionieren und im inneren das eigentliche Objekt.
    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!