AutoScroll und Dock.Fill

Hallo Wissende,

ich stehe zurzeit vor dem Problem, eine Windows-Forms-Anwendung zu schreiben, die unter verschiedenen Bildschirm-Auflösungen immer „gut aussehen“ soll.
Dabei bekomme ich es nicht hin, dass die Property „AutoScroll“ einer Form ScrollBars zeigt, wenn ein Panel in der Form auf Dock.Fill steht.

Beispiel:
Man nehme eine neue Form und setze die Property „AutoScroll“ auf „True“.
In diese Form setze man ein Panel mit der Property „Dock“ auf „Top“.
Dann setze man in die Form ein zweites Panel mit der Property „Dock“ auf „Fill“ und der Property „MinimumSize“ auf „0; 100“.
Die Panels sollten verschiedene BackColors haben, um den nachfolgenden Effekt besser mitverfolgen zu können.
Wenn ich jetzt die Größe der Form in der Vertikalen ändere und so klein mache, dass nicht beide Panels in ihrer Mindesthöhe (Panel1 hat ja eine feste Höhe und Panel2 eine Mindesthöhe von 100) vollständig angezeigt werden können, würde ich erwarten, dass rechts ein ScrollBar erscheint. Das tut er jedoch nicht, bzw. erst dann, wenn auch das erste Panel nicht mehr vollständig angezeigt werden kann.
Ich halte das für einen Fehler im Layout-Verhalten und habe keine Idee, wie ich ein „Dock.Fill“ mit gleichzeitigem „AutoScroll“ des übergeordneten Containers sauber hinbekomme, ohne EventHandler für „SizeChanged“-Events selbst zu programmieren.

Hat einer einen Vorschlag?

Danke und Gruß
Thomas

Dock.Fill und MinimumSize wiedersprechen sich ja auch.

Fill bedeutet nimm den ganzen verfügbaren Platz. Das kann weniger sein als Min. Daher ist der form das egal, ob Panel 2 noch rein passt oder nicht, somit kein Scrollbar.

Der gefillte Panel erhält allerdings eine eigene Scrollbar, für den Fall dass SEIN Inhalt nicht mehr in ihn rein passt. Reicht das nicht aus?

Ansonsten, wie wäre es der Form nicht gleich eine so gewählte MinSize zu geben, dass der gefillte Panel eine Gewisse Größe nicht unterschreitet?

Gruß M.

Hallo M.,

vielen Dank für Deine Antwort.
Ich finde nicht, dass sich Fill und MinSize widersprechen sollen: „Nimm den Platz, der zur Verfügung steht, jedoch nicht weniger als …“.
Der Form als ganzes eine Mindestgröße zu geben, leuchtet zwar ein, scheitert jedoch dann, wenn die beiden Panels innerhalb eines Gefüges von weiteren Panels und SplitLayoutContainern sind. Mein Beispiel war nur eine Vereinfachung.

Sei’s drum, offensichtlich scheint nach einiger Zeit Gugeln die einzige wirksame Methode zu sein, dem übergeordneten Container die Property „AutoScrollMinSize“ einen Wert zu verpassen. Damit erreicht man halbwegs den gewünschten Effekt.

Grüße
Thomas