C# Window Forms Fenster automatisch updaten?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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.


theCPP 
Fragesteller
 13.01.2023, 07:39

Ok. Danke für die Antwort. Dann wechsle ich zu XAML.

0