Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje některé nové funkce a vylepšení Windows Forms v .NET 8.
Při migraci z rozhraní .NET Framework na .NET 8 byste měli vědět několik zásadních změn. Další informace najdete v Zásadní změny v Windows Forms.
Vylepšení datových vazeb
Nový modul datových vazeb byl ve verzi Preview s .NET 7 a je teď plně povolený v .NET 8. I když není tak rozsáhlý jako stávající modul pro vytváření datových vazeb model Windows Forms, tento nový modul je modelován po WPF, což usnadňuje implementaci principů návrhu MVVM.
Vylepšené možnosti datových vazeb umožňují plné využití modelu MVVM a využití mapovačů relačních objektů z ViewModelů v rámci Windows Forms. Tím se sníží množství kódu v souborech za kódem. Důležitější je, že umožňuje sdílení kódu mezi model Windows Forms a dalšími rozhraními .NET GUI, jako jsou WPF, UPW/WinUI a .NET MAUI. Je důležité si uvědomit, že zatímco dříve zmíněné architektury grafického uživatelského rozhraní používají XAML jako technologii uživatelského rozhraní, XAML se nechystá do model Windows Forms.
Rozhraní IBindableComponent a BindableComponent třída řídí nový systém vazeb. Control implementuje rozhraní a poskytuje nové možnosti datových vazeb pro Windows Forms.
Příkazy tlačítek
Příkazy spouštěné tlačítkem byly ve verzi Preview s .NET 7 a jsou teď plně povolené v .NET 8. Podobně jako WPF může být instance objektu, který implementuje ICommand rozhraní, přiřazeno k vlastnosti tlačítka Command . Po kliknutí na tlačítko se vyvolá příkaz.
Volitelný parametr lze zadat při vyvolání příkazu zadáním hodnoty vlastnosti tlačítka CommandParameter .
Vlastnosti Command
a CommandParameter
jsou v návrháři nastaveny prostřednictvím okna Vlastnosti v části (DataBindings), jak je znázorněno na následujícím obrázku.
Tlačítka také poslouchají ICommand.CanExecuteChanged událost, která způsobí, že ovládací prvek dotazuje metodu ICommand.CanExecute . Když tato metoda vrátí true
, ovládací prvek je povolen; ovládací prvek je zakázán při false
vrácení.
Vylepšení DPI sady Visual Studio
Visual Studio 2022 17.8 zavádí karty návrháře neuvědomující si DPI. Dříve karta Windows Designer ve Visual Studio běžela na DPI Visual Studio. Toto způsobuje problémy při návrhu aplikace Windows Forms, která nepodporuje DPI. Nyní můžete zajistit, aby se návrhář spustil ve stejném měřítku, ve kterém má aplikace běžet, a to buď s podporou rozlišení DPI, nebo bez ní. Před zavedením této funkce jste museli spustit Visual Studio v režimu, který nebere v úvahu DPI, což při použití škálování v systému Windows způsobuje rozmazání aplikace Visual Studio. Nyní můžete nechat Visual Studio běžet samostatně a umožnit, aby návrhář fungoval bez ohledu na nastavení DPI.
Návrháře bez povědomí DPI pro projekt Windows Forms můžete povolit přidáním <ForceDesignerDPIUnaware>
do souboru projektu a nastavením hodnoty 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>
Důležité
Visual Studio toto nastavení přečte při načtení projektu, a ne při změně. Po změně tohoto nastavení vyložte projekt a znovu jej načtěte, aby Visual Studio toto nastavení respektovalo.
Vylepšení vysokého DPI
Vylepšili jsme vykreslování PerMonitorV2 s vysokým rozlišením DPI:
Správně škálovat vnořené ovládací prvky Například tlačítko, které je na panelu, které je umístěné na stránce karty.
Škálování Form.MaximumSize a Form.MinimumSize vlastnosti na základě aktuálního nastavení DPI monitorování
Od verze .NET 8 je tato funkce ve výchozím nastavení povolená a pokud se chcete vrátit k předchozímu chování, musíte se z ní odhlásit.
Pokud chcete tuto funkci zakázat, přidejte
System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
doconfigProperties
nastavení v runtimeconfig.json a nastavte hodnotu false:{ "runtimeOptions": { "tfm": "net8.0", "frameworks": [ ... ], "configProperties": { "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false, } } }
Různá vylepšení
Tady jsou některé další velmi vhodné změny:
- Byl vylepšen kód, který zpracoval
FolderBrowserDialog
, oprava několika nevrácených paměti. - Kódová základna pro Windows Forms postupně umožňovala podporu nullability v jazyce C#, čímž odstraňovala případné chyby odkazu na hodnotu null.
-
System.Drawing
Zdrojový kód byl migrován do úložiště Windows Forms na GitHubu. - K moderní ikoně Windows má přístup nové rozhraní API. System.Drawing.SystemIcons.GetStockIcon Výčet System.Drawing.StockIconId obsahuje seznam všech dostupných systémových ikon.
- Nyní jsou k dispozici další návrháři během spuštění. Další informace najdete v tématu Problém GitHubu č. 4908.
.NET Desktop feedback