Windows Forms (WinForms)
Eintrag zuletzt aktualisiert am: 19.02.2025

Windows Forms (oft abgekürzt mit WinForms) ist die älteste Desktop-Oberflächenbibliothek in .NET, die im klassischen .NET Framework-Setup, aber auch in den modernen .NET-Versionen in der .NET Desktop Runtime noch enthalten ist und dort auch weiterhin verbessert wird.
Windows Forms basiert auf der klassischen Windows-Programmierschnittstelle (Win32
API). Man kann Windows Forms als eine
Wrapper-Bibliothek verstehen für im Windows-Betriebssystem vorhandene Fenstertechniken und
Steuerelemente. Zusätzlich wird in Windows Forms
GDI+ für die Grafikdarstellung verwendet (z. B. Zeichnen von Formen, Rendern von Text und Bildern).
Werkzeuge
Es gibt innerhalb der
Entwicklungsumgebung Visual Studio einen mächtigen
WYSIWYG-Designer für Windows Forms-Oberflächen. Der Designer erzeugt aber nicht, wie heute in
GUI-Frameworks üblich, eine Markup-Sprache, sondern einen Programmcode in C# oder
Visual Basic .NET. Entwicklerinnen und Entwickler, die die Oberfläche lieber durch Eintippen statt Klicken erstellen wollen, können den
GUI-Programmcode selbst schreiben, das ist aber aufwändig und fehleranfällig. Daher ist der Einsatz des Designers Usus.
Design
Windows Forms-Anwendungen mit reinen Bordmitteln wirken aus heutiger Design-Sicht optisch altbacken. Die Anpassung des Designs der
Steuerelemente ist grundsätzlich möglich, aber in der Implementierung oft sehr aufwändig. Es gibt aber einige kommerzielle
Steuerelementanbieter, die zahlreiche Windows Forms-
Steuerelemente mit modernem Look & Feel und Anpassbarkeit durch Theming anbieten.
Microsoft liefert in Windows Forms einige Basissteuerelemente mit, aber höherwertige
Steuerelemente wie
Wizards, Ribbons, Karusselle, Docking Manager, Diagramme, Tabellenkalkulationen, Kalender, Berichte, PDF-Viewer u.a. muss man kaufen bei
Komponentenanbietern wie DevExpress, Syncfusion, Telerik, Infragistics und Component One (siehe Tabelle). Microsoft sieht sich selbst als Anbieter der Basisinfrastruktur und hat keinerlei Bestrebungen, höherwertige
Steuerelemente anzubieten. Das gilt nicht nur für Windows Forms, sondern für alle
GUI-Frameworks von Microsoft.
Ausgewählte kommerzielle GUI-Komponentenanbieter für Windows Forms
DevExpress WinForms Component Subscription
https://www.devexpress.com/products/net/controls/winforms /
Telerik UI for WinForms
https://www.telerik.com/products/winforms.aspx
Syncfusion WinForms UI Controls Library
https://www.syncfusion.com/winforms-ui-controls
MESCIUS (vormals GrapeCity) ComponentOne Studio for WinForms
https://www.grapecity.com/componentone/net/winforms
Infragistics Ultimate UI for Windows Forms
https://www.infragistics.com/products/windows-forms
Text Control TX Text Control .NET
https://www.textcontrol.com/products/
Xceed Grid, Chart, Editors, Input
Validator, Docking
Windows
https://xceed.com/products/winforms-activex/
Actipro Windows Forms Controls
https://www.actiprosoftware.com/products/controls/windowsforms
Windows Forms im klassischen .NET Framework
Windows Forms wurde in
.NET Framework 1.0 (erschienen am 13. Februar 2002) eingeführt und bekam in
.NET Framework 2.0 einen großen Schub durch zahlreiche neue und verbesserte
Steuerelemente. Windows Forms wurde im klassischen .NET Framework aber seitdem nicht mehr wesentlich weiterentwickelt, da Microsoft mit
.NET Framework 3.0 die
Windows Presentation Foundation (WPF) als Alternative eingeführt hat.
Windows Forms im modernen .NET
Am 23. September 2019 erschien Windows Forms dann aber im Rahmen von
.NET Core 3.0 auch für das moderne .NET [
https://www.heise.de/hintergrund/Umstieg-auf-NET-Core-Desktop-Anwendungen-mit-WPF-und-Windows-Forms-umstellen-4640058.html], läuft aber trotz der grundsätzlichen Plattformunabhängigkeit von .NET Core auch damit nur auf Windows. In
.NET Core 3.1 hat Microsoft einige ältere Windows Forms-
Steuerelemente ausgebaut, obwohl es diese in
.NET Core 3.0 schon gab [
https://www.heise.de/blog/NET-Core-3-1-ist-ein-ungewoehnliches-Release-4612970.html]. Das war ein Verstoß gegen das Semantic Versioning, für den Microsoft sich aber entschuldigte [
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/]. Beweggrund für diese unerlaubten Breaking Changes war, dass Microsoft es sich bei der Portierung des Windows Forms-Designers für
Visual Studio einfacher machen wollte. Die entfernten
Steuerelemente sind alles
Steuerelemente, die in
.NET Framework 1.0 eingeführt wurden und für die es ab
.NET Framework 2.0 bessere Alternativen gab. Weitere ältere
Steuerelemente sind in
.NET 5.0 entfallen
https://docs.microsoft.com/en-us/dotnet/core/compatibility/windows-forms/5.0/winforms-deprecated-controls; dies stellte aber dann jedoch keinen Bruch gegen die Regeln des Semantic Versioning dar. Eine Migration einer Windows Forms-Oberfläche vom klassischen .NET Framework zum modernen .NET ist sehr unaufwändig, sofern man nicht die älteren
Steuerelemente verwendet, die entfallen sind.
Migration einer Windows Forms-Oberfläche vom klassischen .NET Framework zum modernen .NET
Eine Migration einer Windows Forms-Oberfläche vom klassischen .NET Framework zum modernen .NET ist sehr unaufwändig, sofern man nicht die älteren
Steuerelemente verwendet, die entfallen sind.
Windows Forms auf anderen Plattformen
Die Windows Forms-Implementierung im Rahmen von Microsoft .NET läuft nur auf Windows, auch im modernen, plattformneutralen .NET. Es gibt auch eine plattformneutrale Implementierung von Windows Forms im Rahmen des Mono-Projekts. Mono ist eine Nachimplementierung des klassischen .NET Frameworks einschließlich Windows Forms und
ASP.NET Model View Controller (
MVC).
Im Rahmen von "
One .NET" nicht aus Mono in das moderne .NET übernommen wurde das plattformneutrale Windows Forms. Allerdings hat das Wine-Projekt die alte Mono-Implementierung übernommen
https://gitlab.winehq.org/wine-mono/mono. Die meisten Teile der Windows Forms-Implementierung sind seit Jahren nicht mehr angefasst worden, aber es gibt immer mal wieder einzelne kleinere Beiträge im Repository
https://gitlab.winehq.org/mono/mono/-/tree/main/mcs/class/System.Windows.Forms
Verbreitung von Windows Forms
In Deutschland und weltweit arbeiten immer noch viele Entwicklerinnen und Entwickler an Windows Forms-Anwendungen. Dies sind aber primär bestehende Anwendungen. Neuentwicklungen mit Windows Forms sind selten und finden hauptsächlich in Entwicklungsteams statt, die bisher schon mit Windows Forms arbeiten. Diese Zielgruppe will Microsoft mit den neuen Features in Windows Forms fördern.
Namensraum
Die Windows Forms werden im
FCL-Namensraum
System.Windows.Forms bereitgestellt. In der Beta-Version des .Net Framework 1.0 hieß der Namensraum noch System.WinForms. Daher sprechen auch heute noch viele Entwickler kurz von "WinForms".
Standardisierung
Windows Forms gehören zu den Teilen der
.NET Framework Class Library, die nicht Teil des
ISO- und
ECMA-Standards "CLI" sind.
Vergleich zu Java
Pendants zu Windows Forms in
Java sind Bibliothek wie das Abstract Window Toolkit (
AWT), Swing und
Standard Widget Toolkit (
SWT).
Deployment von Windows Forms-Anwendungen
Beim Verteilen von fertigen Anwendungen muss man zwischen klassischen .NET Framework und modernem .NET unterscheiden. Beim klassischen .NET Framework hat man immer ein sogenanntes Framework Dependent Deployment (
FDD): Bevor man die WPF-Anwendung verteilen kann, muss das .NET Framework installiert werden. Das
FDD gibt es auch noch im modernen .NET. Alternativ können Entwicklerinnen und Entwickler eine Self-Contained-App kompilieren, die alle benötigen Teile der Laufzeitumgebung und alle benötigen Teile der Kernbibliothek mitbringt. Die Verbreitung von Windows Forms-Anwendungen erfolgt über Installationsverfahren wie
ClickOnce, MSI,
MSIX, Microsoft Store, InstallShield, Inno Setup, Chocolatey,
WinGet etc.
Neuerungen in Windows Forms in .NET Core 3.0
- Application.SetHighDpiMode(HighDpiMode.PerMonitorV2)
Neuerungen in Windows Forms in .NET 5.0
- Neues Steuerelement: TaskDialog = ausgebaute Messagebox
- ListView mit zusammenklappbaren Gruppen
- FileDialog mit mehrfach-Zustand via ClientGuid
- Verbesserungen für UI-Automation
Neuerungen in Windows Forms in .NET 6.0
- Windows Forms auf Windows Arm64
- Application.SetDefaultFont()
- Designer Hosting (wie in .NET Framework)
Neuerungen in Windows Forms in .NET 7.0
Neuerungen in Windows Forms in .NET 8.0
MVVM nun offiziell stabil
Neuerungen in Windows Forms in .NET 9.0
- Dark Mode
- Mehrfachauswahl im Steuerelement FolderBrowserDialog
- Das Control-Steuerelement, von dem alle Steuerelemente in Windows Forms und auch das Formular als solches erbt, besitzt nun eine Methode InvokeAsync() zur einfachen Ausführung asynchroner Aufgaben.