Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel bietet eine allgemeine Übersicht über die Neuerungen mit Windows Forms (WinForms) in .NET 10. Ausführliche Informationen finden Sie in den Veröffentlichungsankündigungen. Verwenden Sie die Releaseankündigungen, um einen Überblick über die gesamte .NET 10-Version zu erhalten. In den restlichen Abschnitten werden einige der wichtigsten Änderungen an Windows Forms hervorgehoben.
.NET 10 wurde im November 2025 veröffentlicht.
Release-Ankündigungen
Jede Releaseankündigung enthält detaillierte Informationen zu Änderungen von Windows Forms für .NET 10:
- .NET 10
- .NET 10 RC2
- .NET 10 RC1
- .NET 10 Preview 7
- .NET 10 Preview 6
- .NET 10 Preview 5
- .NET 10 Preview 4
- .NET 10 Preview 3
- .NET 10 Preview 2
- .NET 10 Preview 1
Änderungen an der Zwischenablage
Windows Forms enthält neuen Code für die Zwischenablage-API. Die Zwischenablage wird so neu gestaltet, dass ihr Code für Windows Presentation Foundation (WPF) freigegeben werden kann. Beide Desktoptechnologien verwenden jetzt denselben Code und vereinheitlichen die Interaktion mit der Zwischenablage. Weitere Informationen finden Sie unter Windows Forms-Zwischenablage und DataObject-Änderungen in .NET 10.
.NET 9 hat BinaryFormatter eingestellt, das in einigen Zwischenablagevorgängen verwendet wird. Für diese Zwischenablagevorgänge müssen Sie sich für das Kompatibilitätspaket entscheiden oder den Vorgang umgehen. Um den Übergang zu erleichtern, wenn man von BinaryFormatter wegzieht, erklärt .NET 10 bestimmte Zwischenablagemethoden für veraltet und zeigt damit an, dass sie nicht mehr verwendet werden sollten. Weitere Methoden werden hinzugefügt, die bei der JSON-Serialisierung von Zwischenablagedaten helfen und die Notwendigkeit von BinaryFormatter umgehen.
Asynchrone Formulare
Windows Forms verfügt über vollständig integrierte asynchrone Formularunterstützung. Darüber hinaus verfügt die asynchrone Aufgabe jetzt über einen schwachen Verweis auf das Formular, wodurch reaktionsfähige UIs beim Verwalten mehrerer Fenster aktiviert werden.
Windows Forms für .NET 9 hat neue Methoden eingeführt, um das Anzeigen von Formularen und Dialogfeldern asynchron zu unterstützen, aber in einem Opt-In-Vorschaumodus, in dem Sie Compilerfehler WFO5002 unterdrücken mussten, um das Feature zu verwenden. Dieser Compilerfehler wird nicht mehr mit .NET 10 ausgelöst.
Die folgenden APIs gelten nicht mehr als experimentell:
Individuelle Designer-Verbesserungen
Mehrere UITypeEditor-Typen wurden von .NET Framework portiert, darunter ToolStripCollectionEditor und mehrere Editoren, die im Zusammenhang mit dem DataGridView-Steuerelement stehen. Diese Editoren sind jetzt durch das PropertyGrid und das Windows Forms Designer-Aktionen-Panel auffindbar.
SnapLines wurden für benutzerdefinierte Designer korrigiert.
Dunkler Modus
Windows Forms verfügt über vollständig integrierte Unterstützung für den dunklen Modus.
Windows Forms für .NET 9 hat eine vorläufige visuelle Gestaltung im dunklen Modus eingeführt, die jedoch nur in einem Opt-in-Vorschau-Modus verfügbar ist, in dem Sie den Compilerfehler WFO5001 unterdrücken mussten, um die Funktion zu nutzen. Dieses Feature wird ab .NET 10 nicht mehr durch diesen Compilerfehler geschützt.
Die Application.SetColorMode(SystemColorMode) API gilt nicht mehr als experimentell.
Klärung der Verwendung von ControlStyles ApplyThemingImplicitly
Steuerelemente folgen dem Farbmodus der Anwendung, der auf dunkel oder hell festgelegt ist. Es kann jedoch vorkommen, dass Sie eigene Steuerelemente verfassen und zeichnen, aber vorhandene allgemeine Win32-Steuerelemente verwenden, z. B. die Bildlaufleiste. Es sei denn, Sie aktivieren das Thema, bevor die CreateParams Eigenschaft gelesen wird, bleiben diese Steuerelemente hellfarben. Es kann auch vorkommen, dass Sie ein Steuerelement erben, das bereits dem Design folgt, und Sie möchten dies deaktivieren, damit Sie die Zeichnung vollständig steuern, z. B. mit einer Schaltfläche.
Unabhängig von Ihrem Anwendungsfall überschreiben Sie die Control.CreateParams-Eigenschaft und rufen Sie SetStyle(ControlStyles.ApplyThemingImplicitly, true) (Opt-in) oder SetStyle(ControlStyles.ApplyThemingImplicitly, false) (Opt-out) auf, bevor die Parameter aus der Basisklasse gelesen werden. Sie können diese Formatvorlage nicht im Konstruktor festlegen. Der Basiskonstruktor liest die CreateParams-Eigenschaft aus, bevor er Ihren Konstruktor aufruft. Der folgende Codeausschnitt zeigt, wie Sie sich anmelden:
public partial class CustomControl1 : Control
{
protected override CreateParams CreateParams
{
get
{
// Set this style BEFORE base.CreateParams is created and returned.
SetStyle(ControlStyles.ApplyThemingImplicitly, true);
CreateParams cp = base.CreateParams;
// Other logic
return cp;
}
}
// Base class constructor is going to read CreateParams property
// before your constructor code runs.
public CustomControl1()
{
// At this point, CreateParams property is already read, you
// can't set ApplyThemingImplicitly here.
InitializeComponent();
}
}
Public Class CustomControl1
Protected Overrides ReadOnly Property CreateParams As CreateParams
Get
' Set this style BEFORE base.CreateParams is created and returned.
SetStyle(ControlStyles.ApplyThemingImplicitly, True)
Dim cp As CreateParams = MyBase.CreateParams
' Other logic
Return cp
End Get
End Property
' Base class constructor is going to read CreateParams property
' before your constructor code runs.
Sub New()
' At this point, CreateParams property is already read, you
' can't set ApplyThemingImplicitly here.
InitializeComponent()
End Sub
End Class
Fehlerkorrekturen
Hier sind einige der in Windows Forms für .NET 10 behobenen Fehler:
- Wenn der DataGridView im Bearbeitungsmodus war, während das Hosting-Dialogfeld geschlossen wurde, würde
InvalidOperationExceptionauslösen. Der Fehler, der dies verursacht hat, wurde behoben. -
Compilerfehler WFO1000 wurde verbessert, um falsche Positivergebnisse im Zusammenhang mit Schnittstellen, die von
IComponentabgeleitet sind, zu reduzieren. - Es wurde eine Regression behoben, bei der
PrinterSettings.DefaultPageSettings.Coloreinen falschen Wert zurückgab. - Auflösen eines Speicherverlusts in der MSHTML-Komponente .
Zugänglichkeit
Verbesserte NVDA-Sprachausgabeunterstützung.
Codebereinigung
Veraltete .NET-Runtime und unnötige Paketverweise entfernt. Der Code-Stil wurde bereinigt, um Warnungen zu beseitigen und die Codequalität zu verbessern.
ScreenCaptureMode-API
Es wurde eine neue API eingeführt, um zu verhindern, dass Bildschirmaufnahmeanwendungen (die die Windows-API verwenden) ein Formular erfassen. Dieses Feature ist nützlich, um vertrauliche Informationen, z. B. Benutzernamen, Benutzer-IDs oder Kennwörter, vor einem Verlust zu schützen.
Der Form.ScreenCaptureMode Wert wird auf einen der folgenden Werte festgelegt, um das Erfassungsverhalten zu steuern:
-
Allow—(Standard) Ermöglicht die Erfassung des Formulars. -
HideContent– Das Formular wird beim Erfassen abgeblendet angezeigt. -
HideWindow– Weichzeichnen des Formulars beim Erfassen. (Erfordert Windows 10 20H1, Version 2004 oder höher.)
Verbesserungen am Analysator
Vorhandene Analysatoren wurden fein abgestimmt, um falsch positive Ergebnisse zu reduzieren.
Neue Analysegeräte wurden hinzugefügt:
-
Warnung WFDEV004 -
Form.OnClosing,Form.OnClosedund die entsprechenden Ereignisse sind veraltet. - Warnung WFDEV005 -
GetDataMethoden sind veraltet. Verwenden Sie stattdessenTryGetData<T>-Methoden. - Warnung WFDEV006 – Einige Steuerelemente sind veraltet. Sie werden für die binäre Kompatibilität mit .NET Framework bereitgestellt.
.NET Desktop feedback