WinForms automatisch vertikal skalieren, während die Breite einstellbar bleibt?

8

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.
  • Setzen Sie die Zeile jetzt auf "AutoSize", die erste Spalte auf "100%" und die zweite Spalte auf "AutoSize".
  • Setzen Sie abschließend die gesamte 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.

    
Roman Starkov 19.10.2010, 14:24
quelle

2 Antworten

6

Hoffentlich haben Sie jetzt die Lösung. Aber wenn jemand dieselbe Abfrage hat, können Sie die Breite der Maximum Size-Eigenschaft auf die tatsächliche Breite des Formulars und die Höhe der MaximumSize auf 0 setzen.

    
Scotti 13.01.2011, 09:26
quelle
1

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.

    
Jeff Yates 03.11.2010 14:48
quelle

Tags und Links