Co nowego dla platformy .NET 8 (Windows Forms .NET)
W tym artykule opisano niektóre nowe funkcje i ulepszenia formularzy systemu Windows na platformie .NET 8.
Podczas migracji z programu .NET Framework do platformy .NET 8 należy pamiętać o kilku zmianach powodujących niezgodność. Aby uzyskać więcej informacji, zobacz Zmiany powodujące niezgodność w formularzach systemu Windows.
Ulepszenia powiązania danych
Nowy aparat powiązania danych był w wersji zapoznawczej z platformą .NET 7 i jest teraz w pełni włączony na platformie .NET 8. Chociaż nie jest tak obszerny, jak istniejący aparat powiązania danych formularzy systemu Windows, ten nowy aparat jest modelowany po WPF, co ułatwia implementowanie zasad projektowania MVVM.
Ulepszone możliwości powiązania danych ułatwiają pełne korzystanie ze wzorca MVVM i stosowanie maperów relacyjnych obiektów z modelu ViewModels w formularzach systemu Windows. Zmniejsza to ilość kodu w plikach za pomocą kodu. Co ważniejsze, umożliwia udostępnianie kodu między formularzami systemu Windows i innymi platformami gui platform .NET, takimi jak WPF, UWP/WinUI i .NET MAUI. Należy pamiętać, że chociaż wcześniej wymienione struktury graficznego interfejsu użytkownika używają języka XAML jako technologii interfejsu użytkownika, język XAML nie przychodzi do systemu Windows Forms.
Interfejs IBindableComponent i BindableComponent klasa napędzają nowy system powiązań. Control implementuje interfejs i zapewnia nowe możliwości powiązania danych w formularzach systemu Windows.
Polecenia przycisku
Polecenia przycisków były w wersji zapoznawczej z platformą .NET 7 i są teraz w pełni włączone na platformie .NET 8. Podobnie jak WPF, wystąpienie obiektu, który implementuje ICommand interfejs, można przypisać do właściwości przycisku Command . Po kliknięciu przycisku jest wywoływane polecenie.
Opcjonalny parametr można podać po wywołaniu polecenia, określając wartość właściwości przycisku CommandParameter .
Właściwości Command
i CommandParameter
są ustawiane w projektancie za pośrednictwem okna Właściwości w obszarze (DataBindings), jak pokazano na poniższej ilustracji.
Przyciski nasłuchują ICommand.CanExecuteChanged również zdarzenia, co powoduje, że kontrolka wysyła zapytanie do ICommand.CanExecute metody. Gdy ta metoda zwraca true
wartość , kontrolka jest włączona; kontrolka jest wyłączona po false
powrocie.
Ulepszenia dpi programu Visual Studio
Program Visual Studio 2022 w wersji 17.8 wprowadza karty projektanta nieświadomego dpi. Wcześniej na karcie Windows Designer w programie Visual Studio uruchomiono dpi programu Visual Studio. Powoduje to problemy podczas projektowania aplikacji WINDOWS Forms bez obsługi dpi. Teraz możesz upewnić się, że projektant działa na tej samej skali, co aplikacja ma być uruchamiana, z obsługą dpi lub nie. Przed wprowadzeniem tej funkcji trzeba było uruchomić program Visual Studio w trybie nieświadomym dpi, co sprawiło, że program Visual Studio był rozmyty podczas stosowania skalowania w systemie Windows. Teraz możesz pozostawić program Visual Studio sam i pozwolić projektantowi uruchomić dpi nieświadome.
Projektant dpi nieświadomy dla projektu Windows Forms można włączyć, dodając <ForceDesignerDPIUnaware>
do pliku projektu i ustawiając wartość na true
.
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
<ApplicationHighDpiMode>DpiUnawareGdiScaled</ApplicationHighDpiMode>
</PropertyGroup>
Ważne
Program Visual Studio odczytuje to ustawienie po załadowaniu projektu, a nie w przypadku jego zmiany. Po zmianie tego ustawienia zwolnij i ponownie załaduj projekt, aby program Visual Studio go szanował.
Ulepszenia wysokiej rozdzielczości DPI
Ulepszono renderowanie o wysokiej rozdzielczości PerMonitorV2 DPI:
Poprawnie skaluj zagnieżdżone kontrolki. Na przykład przycisk znajdujący się w panelu, który znajduje się na stronie karty.
Skalowanie Form.MaximumSize i Form.MinimumSize właściwości na podstawie bieżących ustawień DPI monitora.
Począwszy od platformy .NET 8, ta funkcja jest domyślnie włączona i musisz zrezygnować z niej, aby powrócić do poprzedniego zachowania.
Aby wyłączyć tę funkcję, dodaj
System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
doconfigProperties
ustawienia w runtimeconfig.json i ustaw wartość false:{ "runtimeOptions": { "tfm": "net8.0", "frameworks": [ ... ], "configProperties": { "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false, } } }
Różne ulepszenia
Poniżej przedstawiono inne istotne zmiany:
- Poprawiono kod, który obsłużył
FolderBrowserDialog
, naprawiając kilka przecieków pamięci. - Baza kodu formularzy systemu Windows powoli włącza wartość null w języku C#, wykorzeniając wszelkie potencjalne błędy odwołania o wartości null.
- Kod
System.Drawing
źródłowy został zmigrowany do repozytorium GitHub formularzy systemu Windows. - Dostęp do nowoczesnych ikon systemu Windows można uzyskać za pomocą nowego interfejsu API. System.Drawing.SystemIcons.GetStockIcon Wyliczenie System.Drawing.StockIconId zawiera listę wszystkich dostępnych ikon systemowych.
- Teraz więcej projektantów jest dostępnych w czasie wykonywania. Aby uzyskać więcej informacji, zobacz Problem z usługą GitHub #4908.
.NET Desktop feedback