Windows Forms lebt!

Der Dotnet-Doktor Holger Schwichtenberg  –  63 Kommentare

Überraschend bietet Microsoft nicht einfach das alte Windows Forms in der neuen .NET-Welt an, sondern arbeitet aktiv an der Weiterentwicklung. Was heißt das für .NET-Entwickler?

Windows Forms ist die ursprüngliche Desktop-Oberflächenbibliothek in .NET, die in .NET Framework 1.0 im Jahr 2001 eingeführt wurde und 2005 in .NET 2.0 einen großen Schub an Erweiterungen erfuhr.

13 Jahre Stillstand

Mit der Einführung in der Windows Presentation Foundation (WPF) im Jahr 2006 geriet Windows Forms in Abseits und wurde bis auf kleinere Verbesserungen insbesondere im Bereich der High-DPI-Unterstützung und Accessibility (siehe Entwicklung von .NET 4.5 bis 4.8) nicht mehr weiterentwickelt.

In .NET Core 1.0 bis 2.2 war Windows Forms (genauso wie WPF) nicht enthalten. Für .NET Core 3.0 (erschienen im September 2019) hat Microsoft dann WPF und Windows Forms in die neue .NET-Welt übernommen (aber nicht plattformneutral, sondern nur auf Windows). Daher sind beide GUI-Frameworks auch in .NET 5.0 (und den kommenden Nachfolgern .NET 6.0, 7.0 usw.) enthalten. Ein brauchbarer Designer für Windows Forms in .NET-Core-/.NET 5.0-Projekte ist allerdings auch in Visual Studio 2019 v16.8 vom November 2020 noch im Preview-Stadium. Man muss sich gegebenenfalls mit der Krücke behelfen, die Oberflächen in einem klassisches .NET-Framework-Projekt zu gestalten und das Resultat in das neue Projekt zu verlinken.

Neue Features seit .NET Core 3.0

Überraschend bietet Microsoft nicht einfach das alte Windows Forms in der neuen .NET-Welt an, sondern arbeitet aktiv an der Weiterentwicklung: In .NET Core 3.0 erschien nur eine kleine Verbesserung, dass man die High-DPI-Einstellung nicht nur per Konfigurationsdatei, sondern auch im Programmcode per API setzen kann. In .NET 5.0 sind jedoch direkt mehrere nennenswerte Verbesserungen für Windows Forms eingebaut:

  • neues Steuerelement: TaskDialog (eine sehr viel flexiblere Variante einer Messagebox).
  • Das ListView-Steuerelement bietet nun zusammenklappbare Gruppe.
  • FileDialog kann durch ClientGuid mehrere Zustände in einer Anwendung haben.
  • signifikante Leistungsverbesserungen bei Rendering einiger Steuerelemente.
  • Verbesserungen für UI-Automation.

Erwähnen muss man, dass die Verbesserungen der Steuerelemente nicht von Microsoft-Entwicklern selbst stammen, sondern Pull-Requests aus der Nutzergemeinde waren, die Microsoft in das offizielle Release übernommen hat.

Ebenfalls nicht verschweigen darf man, dass es einige kleinere Features in der .NET-Core- und .NET-5-Implementierung von Windows Forms fehlen und im November 2019 noch mal einen großen Rückschlag gab, als Microsoft in .NET Core 3.1 einige ältere Windows-Forms-Steuerelemente wieder ausgebaut hatte, die in .NET Core 3.0 enthalten waren.

Was will uns Microsoft sagen?

Seit vielen Jahren gibt es Diskussionen in der .NET-Nutzergemeinde zum Thema Windows Forms versus WPF. Einige Softwareanbieter haben ihre Oberflächen auf das grafisch mächtigere WPF umgestellt (bei MAXIMAGO erstellen wir seit Jahren .NET-Anwendungen ausschließlich mit WPF, da unsere Ansprüche an die User Experience mit Windows Forms deutlich aufwendiger in der Umsetzung sind), aber andere Softwareanbieter sind bei dem vermeintlich einfacheren Windows Forms geblieben – und das sind nicht wenige Unternehmen. Drittanbieter liefern seit Jahren immer neue Steuerelemente für Windows Forms und erhielten auch damit das alte GUI-Framework am Leben. Die weiterhin vorhandene Nachfrage nach Windows Forms hat auch Microsoft erkannt und bietet daher diesem Kundenkreis Anreize, in die moderne .NET-5.0-Welt zu wechseln.

Für WPF gibt in .NET Core 3.0/3.1 und .NET 5.0 keine signifikanten Verbesserungen außer ein paar Bugfixes. Heißt das, dass Microsoft nun wieder empfiehlt, dass Entwickler mit Windows Forms arbeiten sollen? Nein, sicher nicht. Ich sehe es so: Windows Forms hat einen größeren Nachholbedarf, weil es eine sehr alte Architektur ist und viele Jahre brach lag.

Windows Forms lebt!
"State auf the Art" bei den GUI-Frameworks vor WinUI3 aus der Sicht von Microsoft (Bild: Microsoft)

Zukunft WinUI3?

Aus der Sicht von Microsoft ist das GUI-Framework der Zukunft weder Windows Forms noch WPF, sondern die Windows UI Library 3 (WinUI3). Die GUI-Bibliothek WinUI 3.0 ist der Nachfolger der Universal Windows Platform (UWP) mit WinUI2, der in Windows 10 eingeführte neue Name für die "Modern Apps". Während UWP allein auf der WinRT-API aufsetzt und daher nicht alle Funktionen des Betriebssystems und alle lokalen Ressourcen verwenden kann, kann der eine WinUI-3-basierte Anwendung wahlweise WinRT und/oder Win32 nutzen. Damit stehen ihr alle Möglichkeiten des Windows-Betriebssystems zur Verfügung.

Ob WinUI3 von den Kunden besser angenommen wird als UWP, wird sich zeigen, wenn WinUI3 erscheint (ursprünglich angekündigt für 2020, nun für 2021). Denn eines ist schon heute klar: Der Umstieg von WPF auf WinUI3 bedeutet einigen Aufwand – der aber deutlich geringer ist als der Aufwand, von Windows Forms auf WPF oder WinUI3 zu wechseln, denn auch WinUI3 verwendet wie WPF als GUI-Beschreibungssprache XAML, aber es gibt einige Unterschiede.