Microsoft 29.06.2021, 08:15 Uhr

Neues für Windows Forms in .NET 6.0 Preview 5

In einem Beitrag des Microsoft DevBlog schreibt Softwarer-Ingenieur Igor Velikorossov darüber, was es in der Vorschauversion 5 für .NET 6.0 Neues in der Windows Forms-Laufzeitumgebung gibt.
(Quelle: Microsoft.com)
Windows Forms und .NET 6 entstammen zwei völlig verschiedenen Zeitaltern. Als Windows Fors entstand gab es noch CRT-Monitore, die zumeist auf die Anzeige von 1024x768 Bildpunkten beschränkt waren und "Microsoft Sans Serif" als Standardschriftart für Windows nutzen. Schon der Sprung zu Windows Vista war ein großer. Die Transformation auf die .NET Core-Schiene läuft jetzt schon seit drei Jahren. 2018 mit .NET 3.0 begann Microsoft erneut, Windows Forms zu modernisieren. Dabei tauchten gleich etliche Probleme dank der "Altlasten" von Windows Forms auf. Zum Beispiel war der Designer kein echtes WYSIWYG mehr, weil der Visual-Studio-Prozess unter .NET Framework 4.7.2 läuft und die alte Standardschriftart verwendet, während eine .NET-Anwendung zur Laufzeit die neue Schriftart verwendet. Der pixelgenaue Aufbau einer Benutzeroberfläche ist seither durch das nicht mehr exakte WYSIWYG gestört. Microsoft hatte zwar Migrationsstrategien bereitgestellt, aber die Anwendung dieser Strategien auf Hunderte von Formularen und Steuerelementen konnte ein kaum zu stemmendes Unterfangen sein.
Um die Migration dieser pixel-perfekten Anwendungen zu erleichtern, hat Microsoft seinem Toolkit ein neues API hinzugefügt: void Application.SetDefaultFont(Font font). Wie viele andere Application-APIs kann dieses API nur verwendet werden, bevor das erste Fenster erstellt wird, was in der Regel in der Main()-Methode der Anwendung geschieht. Der Versuch, die Standardschriftart einzustellen, nachdem das erste Fenster erstellt wurde, führt zu einer InvalidOperationException.

Weitere Laufzeitdesigner

Das Windows Forms SDK besteht aus zwei verschiedenen Teilen:
  • der Runtime, das heißt dem Code, der ausgeführt wird, Open-Source unter dotnet/winforms, und
  • dem Designer, der aus "allgemeinen Designern" (das heißt einem Designer, den Entwickler in ihre Anwendung einbetten können) und "Visual Studio-spezifischen" Komponenten besteht.
In .NET Framework lebten diese beiden Teile eng zusammen, und das ermöglichte es Entwicklern, VS-spezifische Funktionalität in ihren Anwendungen aufzurufen und zu verwenden. In .NET Core wurden diese beiden Komponenten aufgeteilt, und nun entwickeln sie sich größtenteils unabhängig voneinander. Mit dieser Trennung wird die Visual Studio Designer-spezifische Funktionalität nicht öffentlich verfügbar gemacht, da sie außerhalb von Visual Studio keinen Sinn macht. Andererseits kann die allgemeine Designer-Funktionalität außerhalb von Visual Studio verwendet werden und ist nützlich, und als Reaktion auf die Anfragen seiner Kunden hat Microsoft in Preview 5 eine Reihe von APIs portiert, die das Erstellen eines Allzweckdesigners (zum Beispiel eines Berichtsdesigners) ermöglichen sollen.
Die Liste der knapp 30 portierten APIs finden Sie im englischsprachigen Blogbeitrag von Igor Velikorossov. Als Testbeispiel verweist Microsoft auf dieses Beispiel von Paolo Foti.


Das könnte Sie auch interessieren