Ist es möglich, die WinForms-Layout-Engine zu verwenden, um ein Formular so einzurichten, dass die Höhe automatisch an den Inhalt angepasst wird, aber die Breite vom Benutzer angepasst werden kann?
Betrachten Sie als Beispiel die folgende etwas gekünstelte Form:
TLP
: TableLayoutPanel
, mit 1 Zeile und 2 Spalten. label1
: Label
, in der linken Spalte enthalten. Setzen Sie Text
auf etwas Long, AutoSize
auf false, Dock
auf Fill. button1
: Schaltfläche, in der rechten Spalte enthalten. Setzen Sie AutoSize
auf wahr. TLP
auf AutoSize
true, AutoSizeMode
auf GrowAndShrink. An dieser Stelle könnte die TLP
vernünftig horizontal skaliert werden, aber WinForms scheint dies nicht zu erlauben.
Die Idee ist, dass das Formular, das diesen TLP enthält, basierend auf der Breite vertikal wachsen oder schrumpfen würde, was der Benutzer ändern kann, indem er das Fenster wie gewöhnlich skaliert.
Das ist durchaus möglich. Um dies zu tun, müssen Sie SetBoundsCore
überschreiben deine Form. In diesem können Sie dann die Höhe so steuern, dass sie sich nicht ändert, wenn eine Größenänderung dies wünscht. Speichern Sie einfach die Höhe, in der sie in einer Variablen sein soll, und setzen Sie sie dann immer auf die Überschreibung. Auf diese Weise speichern Sie die Höhe bei der automatischen Größenanpassung, bevor Sie das Formular Height
und SetBoundsCore
wird diese neue Höhe ehren.
Tags und Links winforms