Benutzer mit den meisten Antworten
Automatische Scrollleisten funtionieren nicht

Frage
-
Hallo MSDN,
ich stehe mal wieder vor einem kleinen aber nervigem Problem.
Ich habe ein MDI-Formular auf dem ein Grid (volle Breite mit Abstand) und darunter auf der rechten Seite mehrere ein- und mehrzeile Textfelder sind. Die Textfelder unter dem Grid haben als X-Position die Mitte des Formulares und gehen dann bis zum Ende des Grids. Links neben ihnen sind die Labels zur Beschreibung angebracht. Ganz unten am Formularende befinden ja nach Aufruf 4 - 6 Buttons, die sowie die anderen Steuerelemente rechts angeordnet sind.
Bei jedem Resizen werden die Positionen und Größen entsprechend angepasst (jedoch nicht mit Anchor, sondern per Code). Dies hat den Grund, dass einige Steuerelemente nur den Platz in Anspruch nehmen, der nötig ist (das Grid z.B. soll keine halben Zeilen anzeigen). Des Weiteren werden die mehrzeilige Textfelder so angepasst, dass sie möglichst hoch sind, jedoch auch keine halben Zeilen anzeigen. Es wird also der komplette Platz zwischen Grid und Buttons verwendet.
Nun habe ich das Problem, dass die Automatischen Scrollleisten nicht wirklich gut funktionieren, sobald die minimale Größe erreicht wurde (Grid 5 Zeilen, mehrzeilige Textfelder 2 Zeilen). Falls z.B. die vertikale Scrollleiste nach unten verschoben wird, und das Fenster dann vergrößert wird, befindet sich überhalb des Grids leerer Raum. Das Problem habe ich gelöst, indem die Y-Position nicht einfach = 10 gesetzt wird, sondern y = 10 - Me.VerticalScrollbar.Value (denk das heißt so :) ). Damit klappt das Ganze auch wunderbar.
Falls sich jedoch einer von den Buttons links außerhalb des Formulars befindet (also vermutlich eine negative X-Position), wird die horizontale Bildlaufleiste nicht angezeigt. Und da ist mein Problem.
Kann mir da irgendwer helfen?
Viele Grüße
Leucki
Antworten
-
Hallo Leucki,
ich stecke nicht so tief in Deinem Programm
und kann Deine Beschreibung nur eingeschränkt nachvollziehen.
Scrollleisten, implementiert auf der Ebene von ScrollableControl orientieren sich an
den Einstellungen, die während des Layout -Prozesses vorgenommen werden.
Änderst Du ausser der (vorgesehenen) Reihe kommt schnell was durcheinander.
Aufrufe von SuspendLayout während der Neuberechnung sind Pflicht.
Um das Layout zu vereinfachen und nur dort anzupassen, wo es unbedingt notwendig ist,
verpacke die Steuerelemente z. B. in einem TableLayoutPanel .
Die kann man auch schachteln oder weitere Gruppierungen durch Panel vornehmen.
Richtig eingesetzt passt sich die Gesamt-Komposition weitgehend automatisch an.
Einige praktische Beispiele findest Du in AutoLayout by Examples
Im Falle der Schaltflächen solltest Du vermeiden, dass sie (manchmal) nicht sichtbar sind.
Denn wenn sie nur durch Scrollen erreichbar sind, ist das den späteren Anwender
"einfach nur nervig" (O-Ton eines Anwender in einem ähnlichen Fall).
Gruß Elmar- Als Antwort vorgeschlagen Robert BreitenhoferModerator Sonntag, 24. Januar 2010 14:49
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 11. Februar 2010 10:08
Alle Antworten
-
Hallo Leucki,
ich stecke nicht so tief in Deinem Programm
und kann Deine Beschreibung nur eingeschränkt nachvollziehen.
Scrollleisten, implementiert auf der Ebene von ScrollableControl orientieren sich an
den Einstellungen, die während des Layout -Prozesses vorgenommen werden.
Änderst Du ausser der (vorgesehenen) Reihe kommt schnell was durcheinander.
Aufrufe von SuspendLayout während der Neuberechnung sind Pflicht.
Um das Layout zu vereinfachen und nur dort anzupassen, wo es unbedingt notwendig ist,
verpacke die Steuerelemente z. B. in einem TableLayoutPanel .
Die kann man auch schachteln oder weitere Gruppierungen durch Panel vornehmen.
Richtig eingesetzt passt sich die Gesamt-Komposition weitgehend automatisch an.
Einige praktische Beispiele findest Du in AutoLayout by Examples
Im Falle der Schaltflächen solltest Du vermeiden, dass sie (manchmal) nicht sichtbar sind.
Denn wenn sie nur durch Scrollen erreichbar sind, ist das den späteren Anwender
"einfach nur nervig" (O-Ton eines Anwender in einem ähnlichen Fall).
Gruß Elmar- Als Antwort vorgeschlagen Robert BreitenhoferModerator Sonntag, 24. Januar 2010 14:49
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 11. Februar 2010 10:08