Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ScrollableControl mit Custom Scrollbar
ViperNeo
myCSharp.de - Member



Dabei seit:
Beiträge: 370
Herkunft: Darmstadt

Themenstarter:

ScrollableControl mit Custom Scrollbar

beantworten | zitieren | melden

Hallo Leute,

ich suche seit Tagen verzweifelt nach einer Lösung und komme einfach nicht voran. Jeder kennt sicher das Panel und seinen AutoScrollMode. Die Scrollbars sind auch im Designer in einer NonClientArea im Control, heißt die ClientArea wird anscheinend automatisch verkleinert um für die Scrollbars Platz zu schaffen.

Ich möchte nun eigentlich genau diese Funktion nutzen, allerdings meine eigenen Scrollbalken nutzen. Panel und Scrollbalken sind fertig, allerdings kann ich sie derzeit nur manuell an die enstprechende Position schubsen und dadurch das sie im normalen ClientRectangle drin hängen erreicht man nie 100%ig die rechte untere Ecke da die Scrollbalken einen Teil des Bereichs einnehmen...

So, nun habe ich mit WM_NCCALCSIZE etc. rumgespielt und habe es auch geschafft das ich einen kleinen Teilbereich des Panels als NonClientArea habe. Hier kann ich jedoch die Scrollbars nicht reinschubsen....

Kennt jemand eine Lösung für dieses Problem? Wäre super wenn jemand einen Tipp hätte.

Danke!

Grüße
viperneo
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ViperNeo,

als ich damals vor einem ähnlichen Problem stand, war das Size vs. ClientSize bei eigenem Control meine (möglicherweise falsche) Schussfolgerung. Wenn ich dich richtig verstehe, ist dir gelungen, die ClientArea beliebig zu verkleinern. Kannst du mal deinen Code posten?

herbivore
private Nachricht | Beiträge des Benutzers
ViperNeo
myCSharp.de - Member



Dabei seit:
Beiträge: 370
Herkunft: Darmstadt

Themenstarter:

beantworten | zitieren | melden

hm, suche es gerne morgen mal raus, allerdings direkt kontrolliert ob der clientsize wert auch kleiner wird habe ich jetzt noch nicht. grundsätzlich zeigt er allerdings eine non-client-area an die ich seperat bepainten kann. habe aktuell nur noch das problem das beim resize des controls die nca ab und an verschwindet .... glaube das problem ist nahezug nicht lösbar ohne ein subpanel im eigentlichen user control... echt ärgerlich.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ViperNeo,

was stört dich an einem Subpanel? Damit würde man die Überlappung doch verlässlich vermeiden können und man hätte einen Mechanismus, den man - so wie es aussieht - leichter beherrschen kann, als die Unterteilung in ClientArea und Non-ClientArea.

herbivore
private Nachricht | Beiträge des Benutzers
ViperNeo
myCSharp.de - Member



Dabei seit:
Beiträge: 370
Herkunft: Darmstadt

Themenstarter:

beantworten | zitieren | melden

eigentlich stört mich hier nur der generierte designer code und wenn man ehrlich ist ist der reiz das es doch irgendwie anders möglich sein muss einfach da^^ handelt sich nicht um ein kundenprojekt, daher spiele ich da halt etwas rum. naja, glaube ich werde die subpanel lösung ausarbeiten, ist wohl der weg mit dem geringsten widerstand ;)
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ViperNeo,

trotzdem könntest du noch deinen Ansatz mit mit WM_NCCALCSIZE posten, möglichst short but complete. Zum einen für die Nachwelt, zum anderen findet sich vielleicht jemand, der das Problem sieht oder mit dem Code spielt und eine Lösung findet.

herbivore
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ViperNeo,

hast du es schon mal mit Control.DisplayRectangle-Eigenschaft probiert? Siehe auch UserControl mit beschränktem Child-Bereich.

herbivore
private Nachricht | Beiträge des Benutzers