C# Window Forms Fenster automatisch updaten?
Hallo,
Ich erstelle Aktuell ein Window Forms Projekt. Mir ist leider aufgefallen das wenn ich das Fenster vergrößere der Inhalt nicht passend vergrößert wird. Wie programmmiere/stelle es ein, das der Inhalt automatisch vergrößert bzw. verkleinert wird?
Danke für eine Antwort
TheCPP
1 Antwort
Das .NET-Framework gibt dir zwei Features an die Hand, mit denen du arbeiten kannst: Autoscaling und Anchoring/Docking.
Du selbst könntest dich an die Form-Ereignisse hängen, die das Layout beeinflusen:
- Load (für das initiale Layout)
- ResizeEnd (nach Größenveränderung durch den Nutzer)
- SizeChanged (sobald sich der Wert des Size-Properties ändert)
- Je nachdem, ob es bei deiner Anwendung einen entsprechenden Anwendungsfall überhaupt gibt: ControlAdded / ControlRemoved
und bei Auslösen dieser die Positionen und Größen je Steuerelement neu berechnen lassen. Am besten durch eine zentrale Hilfsfunktion.
Die Positionen sollten dabei nach prozentualem Schema verteilt werden. So würde sich beispielsweise die X-Position eines Labels, welches genau 25% von der linken Fensterkante entfernt sein soll, mittels Dreisatz berechnen.
Auch Schriftgrößen solltest du besser bei Skalierung neuberechnen. Du könntest dir dafür eine Richtgröße festlegen (Bsp.: Die Schriftgröße entspricht stets 1/50 deiner Fenstergröße).
new Font(/* your font family */, 0.02f * yourForm.Width);
Einfacher hingegen wäre es, die GUI stattdessen mit WPF umzusetzen. In XAML kann man beispielsweise ein Grid anlegen und dieses prozentual in verschiedene Reihen und Spalten aufsplitten. Weiteres dazu (sowie zu noch anderen Features) kannst du im Artikel Dynamische Layouts mit XAML in der Microsoft Dokumentation nachlesen.