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 6.
Při migraci z rozhraní .NET Framework na .NET 6 byste měli vědět několik zásadních změn. Další informace najdete v Zásadní změny v Windows Forms.
Aktualizované šablony pro jazyk C#
.NET 6 zavedl mnoho změn standardních šablon konzolových aplikací. V souladu s těmito změnami byly šablony Windows Forms pro jazyk C# aktualizovány tak, aby ve výchozím nastavení povolovaly global using
direktivy, obory názvů omezené na soubory a typy odkazů s možnou hodnotou null.
Jednou z funkcí nových šablon jazyka C#, které se nepřenesly ve Windows Forms, jsou příkazy nejvyšší úrovně. Typická Windows Forms aplikace vyžaduje [STAThread]
atribut a skládá se z více typů rozdělených mezi více souborů, jako jsou soubory kódu návrháře, takže použití příkazy nejvyšší úrovně nemá smysl.
Nová aplikace bootstrap
Šablony, které generují novou model Windows Forms aplikaci, vytvoří metoduMain
, která slouží jako vstupní bod pro vaši aplikaci při spuštění. Tato metoda obsahuje kód, který konfiguruje model Windows Forms a zobrazí první formulář známý jako bootstrap kód:
class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
V rozhraní .NET 6 byly tyto šablony upraveny tak, aby používaly nový kód bootstrap vyvolaný metodou ApplicationConfiguration.Initialize
.
class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
Tato metoda se automaticky vygeneruje během kompilace a obsahuje kód pro konfiguraci Windows Forms. Soubor projektu teď může tato nastavení ovládat a můžete se vyhnout jeho konfiguraci v kódu. Vygenerovaná metoda například vypadá podobně jako následující kód:
public static void Initialize()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
}
Nový bootovací kód používá Visual Studio ke konfiguraci návrháře Windows Forms Visual Designeru. Pokud se odhlásíte od použití nového kódu bootstrap obnovením starého kódu a obejitím ApplicationConfiguration.Initialize
metody, model Windows Forms Visual Designer nerespektuje nastavení bootstrap, která jste nastavili.
Nastavení vygenerovaná v Initialize
metodě jsou řízena souborem projektu.
Nastavení aplikace na úrovni projektu
Aby bylo možné doplnit novou funkci bootstrap aplikace Windows Forms, mělo by být v souboru projektu nastaveno několik Application
nastavení, která byla dříve nastavena v kódu spouštění aplikace. Soubor projektu může nakonfigurovat následující nastavení aplikace:
Nastavení projektu | Výchozí hodnota | Odpovídající rozhraní API |
---|---|---|
ApplicationVisualStyles | true |
Application.EnableVisualStyles |
ApplicationUseCompatibleTextRendering | false |
Application.SetCompatibleTextRenderingDefault |
ApplicationHighDpiMode | SystemAware |
Application.SetHighDpiMode |
ApplicationDefaultFont | Segoe UI, 9pt |
Application.SetDefaultFont |
Následující příklad ukazuje soubor projektu, který nastaví tyto vlastnosti související s aplikací:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
<ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
<ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
<ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>
</PropertyGroup>
</Project>
Toto nastavení používá Visual Designer Windows Forms. Další informace najdete v části Vylepšení návrháře sady Visual Studio.
Změna výchozího písma
Windows Forms v .NET Core 3.0 zavedl nové výchozí písmo: Segoe UI, 9pt. Toto písmo je lépe sladěné s pokyny pro uživatelské prostředí systému Windows. Rozhraní .NET Framework však jako výchozí písmo používá Microsoft Sans Serif, 8.25pt . Tato změna znesnadnila některým zákazníkům migraci velkých aplikací, které využívaly ideální rozložení v pixelech z rozhraní .NET Framework na .NET. Jediným způsobem, jak změnit písmo pro celou aplikaci, bylo upravit každý formulář v projektu a nastavit Font vlastnost na alternativní písmo.
Výchozí písmo je teď možné nastavit dvěma způsoby:
Nastavte výchozí písmo v souboru projektu, které bude používat kód bootstrap aplikace:
Důležité
To je upřednostňovaný způsob. Použití projektu ke konfiguraci nového systému „Bootstrap“ aplikace umožňuje aplikaci Visual Studio používat tato nastavení v návrháři.
V následujícím příkladu soubor projektu konfiguruje model Windows Forms tak, aby používal stejné písmo jako rozhraní .NET Framework.
<Project Sdk="Microsoft.NET.Sdk"> <!-- other settings --> <PropertyGroup> <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont> </PropertyGroup> </Project>
- nebo -
Application.SetDefaultFont Volání rozhraní API starým způsobem (ale bez podpory návrháře):
class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); Application.SetDefaultFont(new Font(new FontFamily("Microsoft Sans Serif"), 8.25f)); Application.Run(new Form1()); } }
Vylepšení návrháře sady Visual Studio
Vizuální návrhář Windows Forms nyní přesně zobrazuje výchozí písmo. Předchozí verze Windows Forms pro .NET nezobrazily správně písmo Segoe UI ve vizuálním návrháři a ve skutečnosti navrhovaly formulář s výchozím písmem rozhraní .NET Framework. Vzhledem k nové funkci bootstrapu aplikace vizuální návrhář přesně odpovídá výchozímu písmu. Vizuální návrhář navíc respektuje výchozí písmo nastavené v souboru projektu.
Další návrháři modulu runtime
Návrháři, kteří existovali v rozhraní .NET Framework a umožňovali vytvoření návrháře pro obecné účely, například tvorbu návrháře sestav, byli přidáni do .NET 6:
- System.ComponentModel.Design.ComponentDesigner
- System.Windows.Forms.Design.ButtonBaseDesigner
- System.Windows.Forms.Design.ComboBoxDesigner
- System.Windows.Forms.Design.ControlDesigner
- System.Windows.Forms.Design.DocumentDesigner
- System.Windows.Forms.Design.DocumentDesigner
- System.Windows.Forms.Design.FormDocumentDesigner
- System.Windows.Forms.Design.GroupBoxDesigner
- System.Windows.Forms.Design.LabelDesigner
- System.Windows.Forms.Design.ListBoxDesigner
- System.Windows.Forms.Design.ListViewDesigner
- System.Windows.Forms.Design.MaskedTextBoxDesigner
- System.Windows.Forms.Design.PanelDesigner
- System.Windows.Forms.Design.ParentControlDesigner
- System.Windows.Forms.Design.ParentControlDesigner
- System.Windows.Forms.Design.PictureBoxDesigner
- System.Windows.Forms.Design.RadioButtonDesigner
- System.Windows.Forms.Design.RichTextBoxDesigner
- System.Windows.Forms.Design.ScrollableControlDesigner
- System.Windows.Forms.Design.ScrollableControlDesigner
- System.Windows.Forms.Design.TextBoxBaseDesigner
- System.Windows.Forms.Design.TextBoxDesigner
- System.Windows.Forms.Design.ToolStripDesigner
- System.Windows.Forms.Design.ToolStripDropDownDesigner
- System.Windows.Forms.Design.ToolStripItemDesigner
- System.Windows.Forms.Design.ToolStripMenuItemDesigner
- System.Windows.Forms.Design.TreeViewDesigner
- System.Windows.Forms.Design.UpDownBaseDesigner
- System.Windows.Forms.Design.UserControlDocumentDesigner
Vylepšení vysokého DPI pro PerMonitorV2
Vykreslování PerMonitorV2 s vysokým DPI bylo vylepšeno:
Ovládací prvky se vytvářejí se stejným rozpoznáváním DPI jako aplikace.
Ovládací prvky kontejnerů a podřízená okna MDI mají vylepšené škálovací vlastnosti.
Například v .NET 5 by přesunutí aplikace model Windows Forms z monitoru s 200% škálováním na monitor s 100% škálováním vedlo k chybnému nastavení ovládacích prvků. Ve verzi .NET 6 jsme to výrazně vylepšili:
Nová rozhraní API
- System.Windows.Forms.Application.SetDefaultFont
- System.Windows.Forms.Control.IsAncestorSiteInDesignMode
- System.Windows.Forms.ProfessionalColors.StatusStripBorder
- System.Windows.Forms.ProfessionalColorTable.StatusStripBorder
Nová rozhraní API jazyka Visual Basic
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventHandler
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.MinimumSplashScreenDisplayTime
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.MinimumSplashScreenDisplayTime
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.Font
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.Font
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.HighDpiMode
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.HighDpiMode
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.ApplyApplicationDefaults
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.HighDpiMode
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.HighDpiMode
Aktualizovaná rozhraní API
System.Windows.Forms.Control.Invoke nyní přijímá System.Action a System.Func<TResult> jako vstupní parametry.
System.Windows.Forms.Control.BeginInvoke nyní přijímá System.Action jako vstupní parametr.
System.Windows.Forms.DialogResult se rozšiřuje o následující členy:
TryAgain
Continue
System.Windows.Forms.Form má novou vlastnost: MdiChildrenMinimizedAnchorBottom
System.Windows.Forms.MessageBoxButtons se rozšiřuje o následující člena:
CancelTryContinue
System.Windows.Forms.MessageBoxDefaultButton se rozšiřuje o následující člena:
Button4
System.Windows.Forms.LinkClickedEventArgs má nyní nový konstruktor a rozšířil o následující vlastnosti:
System.Windows.Forms.NotifyIcon.Text je teď omezený na 127 znaků (od 63).
Vylepšená přístupnost
Vzory automatizace uživatelského rozhraní (UI) od Microsoftu fungují lépe s nástroji pro přístupnost, jako jsou Narrator a Jaws.
Viz také
.NET Desktop feedback