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.
In diesem Artikel werden einige der neuen Windows Forms-Features und -Verbesserungen in .NET 7 beschrieben.
Es gibt einige wichtige Änderungen, die Sie beim Migrieren von .NET Framework zu .NET 7 beachten sollten. Weitere Informationen finden Sie unter Breaking Changes in Windows Forms.
Verbesserungen bei hohen DPI-Werten
Das Rendering bei hohen DPI-Werten mit PerMonitorV2 wurde verbessert:
Ordnungsgemäße Skalierung geschachtelter Steuerelemente. Beispielsweise eine Schaltfläche, die sich in einem Bereich befindet, der auf einer Registerkartenseite platziert wird.
Die Skalierung von Form.MaximumSize und Form.MinimumSize Eigenschaften basierend auf den aktuellen DPI-Einstellungen des Monitors für Anwendungen, die mit
ApplicationHighDpiModeaufPerMonitorV2laufen.In .NET 7 ist dieses Feature standardmäßig deaktiviert, und Sie müssen sich anmelden, um diese Änderung zu erhalten. Ab .NET 8 ist dieses Feature standardmäßig aktiviert, und Sie müssen es deaktivieren, um zum vorherigen Verhalten zurückzukehren.
Um das Feature zu aktivieren, legen Sie die
configPropertiesEinstellung in runtimeconfig.jsonfest:{ "runtimeOptions": { "tfm": "net7.0", "frameworks": [ ... ], "configProperties": { "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": true, } } }
Verbesserungen und Korrekturen bei der Barrierefreiheit
Diese Version fügt weitere Verbesserungen an der Barrierefreiheit hinzu, einschließlich, aber nicht beschränkt auf die folgenden Elemente:
Viele ankündigungsbedingte Probleme, die in Screenreadern beobachtet wurden, wurden behoben, um sicherzustellen, dass die Informationen zu Steuerelementen korrekt sind. Beispielsweise kündigt ListView jetzt korrekt an, wenn eine Gruppe erweitert oder zusammengeklappt wird.
Weitere Steuerelemente bieten jetzt Unterstützung für die Benutzeroberflächenautomatisierung:
Speicherlecks im Zusammenhang mit dem Ausführen einer Windows Forms-Anwendung unter Hilfstools wie der Sprachausgabe wurden behoben.
Hilfstools zeichnen jetzt präzise Fokusindikatoren und melden korrekte Begrenzungsrechtecke für geschachtelte Formulare und einige Elemente zusammengesetzter Steuerelemente, z. B. DataGridView, ListView und TabControl.
Das Automatisierungs-UI ExpandCollapse-Steuerelementmuster wurde ordnungsgemäß in ListView, TreeViewund PropertyGrid Steuerelementen implementiert und nur für erweiterbare Elemente aktiviert.
Verschiedene Korrekturen des Farbkontrastverhältnisses in Steuerelementen.
Sichtbarkeitsverbesserungen für ToolStripTextBox und ToolStripButton in Designs mit hohem Kontrast.
Verbesserungen bei der Datenbindung (Vorschau)
Während Windows Forms bereits über ein leistungsfähiges Bindungsmodul verfügte, wird eine modernere Form der Datenbindung eingeführt, ähnlich wie die von WPF bereitgestellte Datenbindung.
Mit den neuen Datenbindungsfeatures können Sie das MVVM-Muster vollständig nutzen und objektrelationale Mapper aus ViewModels in Windows Forms einfacher verwenden als zuvor. Dies wiederum ermöglicht es, Code in den CodeBehind-Dateien zu reduzieren und neue Testmöglichkeiten zu eröffnen. Wichtiger ist, dass die Codefreigabe zwischen Windows Forms und anderen .NET-GUI-Frameworks wie WPF, UWP/WinUI und .NET MAUI ermöglicht wird. Und um eine häufig gestellte Frage zu klären, gibt es keine Pläne, XAML in Windows Forms einzuführen.
Diese neuen Datenbindungsfeatures befinden sich in der Vorschau für .NET 7, und mehr Arbeit an diesem Feature erfolgt in .NET 8.
Um die neue Bindung zu aktivieren, fügen Sie der Projektdatei die EnablePreviewFeatures Einstellung hinzu. Dies wird sowohl in C# als auch in Visual Basic unterstützt.
<Project Sdk="Microsoft.NET.Sdk">
<!-- other settings -->
<PropertyGroup>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>
</Project>
Der folgende Codeausschnitt veranschaulicht die neuen Eigenschaften, Ereignisse und Methoden, die den verschiedenen Klassen in Windows Forms hinzugefügt wurden. Obwohl sich das folgende Codebeispiel in C# befindet, gilt es auch für Visual Basic.
public class Control {
[BindableAttribute(true)]
public virtual object DataContext { get; set; }
[BrowsableAttribute(true)]
public event EventHandler DataContextChanged;
protected virtual void OnDataContextChanged(EventArgs e);
protected virtual void OnParentDataContextChanged(EventArgs e);
}
[RequiresPreviewFeaturesAttribute]
public abstract class BindableComponent : Component, IBindableComponent, IComponent, IDisposable {
protected BindableComponent();
public BindingContext? BindingContext { get; set; }
public ControlBindingsCollection DataBindings { get; }
public event EventHandler BindingContextChanged;
protected virtual void OnBindingContextChanged(EventArgs e);
}
public abstract class ButtonBase : Control {
[BindableAttribute(true)]
[RequiresPreviewFeaturesAttribute]
public ICommand? Command { get; set; }
[BindableAttribute(true)]
public object? CommandParameter { [RequiresPreviewFeaturesAttribute] get; [RequiresPreviewFeaturesAttribute] set; }
[RequiresPreviewFeaturesAttribute]
public event EventHandler? CommandCanExecuteChanged;
[RequiresPreviewFeaturesAttribute]
public event EventHandler? CommandChanged;
[RequiresPreviewFeaturesAttribute]
public event EventHandler? CommandParameterChanged;
[RequiresPreviewFeaturesAttribute]
protected virtual void OnCommandCanExecuteChanged(EventArgs e);
[RequiresPreviewFeaturesAttribute]
protected virtual void OnCommandChanged(EventArgs e);
[RequiresPreviewFeaturesAttribute]
protected virtual void OnCommandParameterChanged(EventArgs e);
[RequiresPreviewFeaturesAttribute]
protected virtual void OnRequestCommandExecute(EventArgs e);
}
public abstract class ToolStripItem : BindableComponent, IComponent, IDisposable, IDropTarget {
[BindableAttribute(true)]
[RequiresPreviewFeaturesAttribute]
public ICommand Command { get; set; }
[BindableAttribute(true)]
public object CommandParameter { [RequiresPreviewFeaturesAttribute] get; [RequiresPreviewFeaturesAttribute] set; }
[RequiresPreviewFeaturesAttribute]
public event EventHandler CommandCanExecuteChanged;
[RequiresPreviewFeaturesAttribute]
public event EventHandler CommandChanged;
[RequiresPreviewFeaturesAttribute]
public event EventHandler CommandParameterChanged;
[RequiresPreviewFeaturesAttribute]
protected virtual void OnCommandCanExecuteChanged(EventArgs e);
[RequiresPreviewFeaturesAttribute]
protected virtual void OnCommandChanged(EventArgs e);
[RequiresPreviewFeaturesAttribute]
protected virtual void OnCommandParameterChanged(EventArgs e);
[RequiresPreviewFeaturesAttribute]
protected virtual void OnRequestCommandExecute(EventArgs e);
}
Sonstige Verbesserungen
Hier sind einige weitere wichtige Änderungen:
- Die Drag-and-Drop-Behandlung entspricht der Windows-Drag-and-Drop-Funktion mit umfangreicheren Anzeigeeffekten wie Symbolen und Textbeschriftungen.
- Ordner- und Dateidialogfeld ermöglichen weitere Optionen:
- Zu den zuletzt hinzugefügten
- Schreibzugriff überprüfen
- Erweiterter Modus
- OK erfordert Interaktion
- Schreibgeschützt auswählen
- Ausgeblendete Dateien anzeigen
- Angeheftete Orte anzeigen
- Vorschau anzeigen
- ErrorProvider verfügt jetzt über eine HasErrors Eigenschaft.
- Das Andocklayout des Formulars wurde für Windows 11 angepasst.
Siehe auch
.NET Desktop feedback