Microsoft 14.12.2020, 10:47 Uhr

Neues zur Windows Forms Runtime unter .NET 5.0

Igor Velikorossov, Software Engineer Windows Forms bei Microsoft hat in einem Blogbeitrag die Neuigkeiten der Windows Forms Runtimme unter .NET 5.0 zusammengefasst.
(Quelle: Microsoft.com )
Seit Windows Forms Ende 2018 als Open Source veröffentlicht und auf .NET Core portiert wurde, waren sowohl Microsoft als auch externe Mitwirkende damit beschäftigt, alte Fehler zu beheben und neue Funktionen hinzuzufügen. Das vielleicht Spannendste an Windows Forms ist die lebendige und engagierte Community, die auf GitHub beheimatet ist. Viele der neuen Features und Verbesserungen wurden entweder von Community-Mitgliedern vorgeschlagen oder sogar vollständig von ihnen implementiert. Im Zeitrahmen von .NET 5.0 hat Microsoft über 900 Pull-Requests (PRs) akzeptiert und zusammengeführt, wobei über 70 Prozent dieser PRs von der Community stammen. Igor Velikorossov spricht in diesem Zusammenhang ein großes Lob aus für die Mitwirkenden @hughbe, @gpetrou, @weltkante, @kpreisser und viele andere. Hier ein paar Beispiele für Beiträge der Community:
  • Neues TaskDialog-Steuerelement von @kpreisser. Ein Taskdialog ist ein Dialogfeld, das zur Anzeige von Informationen und zur Entgegennahme einfacher Eingaben des Benutzers verwendet werden kann, aber mehr Funktionen als ein Meldungsfeld hat. Wie ein Meldungsfenster wird es vom Betriebssystem entsprechend den von Ihnen eingestellten Parametern formatiert.
  • ListView-Erweiterungen von @hughbe und @lonitra. Das ListView-Steuerelement ist den Windows-Forms-Entwicklern recht vertraut, dennoch fehlte ihm ein API für den einfachen Zugriff auf verschiedene Funktionen, die in Windows Vista hinzugefügt wurden, wie zum Beispiel ausklappbare Gruppen, Gruppenaufgaben, Untertitel und Fußzeilen. In .NET 5.0 wurde die Lücke geschlossen. Damit ist die Windows Forms ListView viel näher an der Parität mit dem nativen Win32-Steuerelement.
  • FileDialog-Erweiterung von @jnm2. FileDialog hat ein neues API erhalten: FileDialog.ClientGuid. Der Windows-Dateidialog ermöglicht es einer aufrufenden Anwendung, eine GUID mit dem persistierten Zustand eines Dialogs zu verknüpfen. Der Zustand eines Dialogs kann Faktoren wie den zuletzt besuchten Ordner sowie die Position und Größe des Dialogs beinhalten. Typischerweise wird dieser Zustand auf der Grundlage des Namens der ausführbaren Datei gespeichert. Durch die Angabe einer GUID kann eine Anwendung für verschiedene Versionen des Dialogs innerhalb derselben Anwendung (zum Beispiel ein Importdialog und ein Öffnungsdialog) unterschiedliche persistierte Zustände haben.

Leistungsverbesserungen

In .NET 5.0 wurde die Messlatte höher gelegt und mehrere Malpfade optimiert. Historisch gesehen war Windows Forms auf GDI+ (und einige GDI) für Rendering-Operationen angewiesen. Während GDI+ einfacher zu verwenden ist als GDI, weil es den Gerätekontext (eine Struktur mit Informationen über ein bestimmtes Anzeigegerät, wie zum Beispiel einen Monitor oder einen Drucker) über das Graphics-Objekt abstrahiert, ist es aufgrund des zusätzlichen Overheads auch langsam. In einer Reihe von Situationen, in denen das System mit Volltonfarben und Pinseln arbeitet, hat sich Microsoft für die Verwendung von GDI entschieden. Microsoft hat zudem eine Reihe von Rendering-bezogenen APIs (zum Beispiel PaintEventArgs) mit der IDeviceContext-Schnittstelle erweitert, die zwar für Windows Forms-Entwickler nicht direkt verfügbar sind, uns aber die Umgehung des GDI+ Graphics-Objekts ermöglichen und somit Zuweisungen reduzieren und Geschwindigkeit gewinnen. Diese Optimierungen haben eine signifikante Reduzierung des Speicherbedarfs bei Redraw-Pfaden gezeigt, in einigen Fällen eine Einsparung um das zehnfache bei den Speicherzuweisungen.
Den vollständigen englischsprachigen Blogbeitrag von Igor Velikorossov lesen Sie hier.


Das könnte Sie auch interessieren