Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano niektóre nowe funkcje i ulepszenia formularzy systemu Windows na platformie .NET 6.
Migracja z .NET Framework do .NET 6 wiąże się z kilkoma znaczącymi zmianami, które mogą powodować niezgodności i warto je mieć na uwadze. Aby uzyskać więcej informacji, zobacz Łamiące zmiany w Windows Forms.
Zaktualizowane szablony dla języka C#
Platforma .NET 6 wprowadziła wiele zmian w standardowych szablonach aplikacji konsolowych. Zgodnie z tymi zmianami szablony formularzy systemu Windows dla języka C# zostały domyślnie zaktualizowane w celu włączenia dyrektyw, global using
o zakresie plików i typów odwołań dopuszczających wartość null.
Jedną z funkcji nowych szablonów języka C#, które nie zostały przeniesione do usługi Windows Forms, jest instrukcja najwyższego poziomu. Typowa aplikacja Windows Forms wymaga atrybutu [STAThread]
i składa się z wielu typów podzielonych na wiele plików, takich jak pliki kodu projektanta, więc używanie instrukcji najwyższego poziomu nie ma sensu.
Uruchamianie nowej aplikacji
Szablony, które generują nową aplikację Windows Forms, tworzą metodę Main
, która służy jako punkt wejścia dla aplikacji podczas jej uruchamiania. Ta metoda zawiera kod, który konfiguruje formularze systemu Windows i wyświetla pierwszy formularz, znany jako kod bootstrap:
class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Na platformie .NET 6 te szablony zostały zmodyfikowane w celu użycia nowego kodu bootstrap wywoływanego przez metodę ApplicationConfiguration.Initialize
.
class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
Ta metoda jest generowana automatycznie w czasie kompilacji i zawiera kod umożliwiający skonfigurowanie formularzy systemu Windows. Plik projektu może teraz kontrolować te ustawienia i można go uniknąć w kodzie. Na przykład wygenerowana metoda wygląda podobnie do następującego kodu:
public static void Initialize()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
}
Nowy kod bootstrap jest używany przez program Visual Studio do konfigurowania programu Visual Designer formularzy systemu Windows. Jeśli zrezygnujesz z używania nowego kodu bootstrap, przywracając stary kod i pomijając metodę ApplicationConfiguration.Initialize
, program Windows Forms Visual Designer nie będzie przestrzegać ustawień bootstrap, które ustawiłeś.
Ustawienia wygenerowane w metodzie Initialize
są kontrolowane przez plik projektu.
Ustawienia aplikacji na poziomie projektu
Aby uzupełnić nową funkcję uruchamiania aplikacji Windows Forms, w pliku projektu należy ustawić kilka Application
ustawień ustawionych wcześniej w kodzie uruchamiania aplikacji. Plik projektu może skonfigurować następujące ustawienia aplikacji:
Ustawienie projektu | Wartość domyślna | Odpowiedni interfejs API |
---|---|---|
ApplicationVisualStyles | true |
Application.EnableVisualStyles |
ZastosowanieKompatybilnegoRenderowaniaTekstu | false |
Application.SetCompatibleTextRenderingDefault |
ApplicationHighDpiMode | SystemAware |
Application.SetHighDpiMode |
ApplicationDefaultFont | Segoe UI, 9pt |
Application.SetDefaultFont |
W poniższym przykładzie pokazano plik projektu, który ustawia te właściwości związane z aplikacją:
<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>
Program Visual Designer formularzy systemu Windows używa tych ustawień. Aby uzyskać więcej informacji, zobacz sekcję Ulepszenia projektanta programu Visual Studio.
Zmienianie czcionki domyślnej
Formularze Windows na platformie .NET Core 3.0 wprowadziły nową domyślną czcionkę dla Windows Forms: Segoe UI, 9pt. Ta czcionka jest lepiej dopasowana do wytycznych dotyczących środowiska użytkownika systemu Windows. Jednak .NET Framework używa czcionki Microsoft Sans Serif, 8.25pt jako domyślnej czcionki. Ta zmiana utrudniła niektórym klientom migrowanie dużych aplikacji korzystających z doskonałego układu pikseli z programu .NET Framework do platformy .NET. Jedynym sposobem zmiany czcionki dla całej aplikacji było edytowanie każdego formularza w projekcie, ustawienie Font właściwości na czcionkę alternatywną.
Czcionkę domyślną można teraz ustawić na dwa sposoby:
Ustaw domyślną czcionkę w pliku projektu, która ma być używana przez kod bootstrap aplikacji:
Ważne
Jest to preferowany sposób. Skonfigurowanie nowego systemu uruchamiania aplikacji przy użyciu projektu umożliwia programowi Visual Studio używanie tych ustawień w projektancie.
W poniższym przykładzie plik projektu konfiguruje formularze systemu Windows do używania tej samej czcionki, która jest używana przez program .NET Framework.
<Project Sdk="Microsoft.NET.Sdk"> <!-- other settings --> <PropertyGroup> <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont> </PropertyGroup> </Project>
- lub -
Wywołaj API dawnym sposobem (ale bez obsługi projektanta).
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()); } }
Ulepszenia projektanta programu Visual Studio
Projektant wizualny Windows Forms dokładnie odwzorowuje domyślną czcionkę. Poprzednie wersje formularzy Windows dla platformy .NET nie wyświetlały poprawnie czcionki Segoe UI w Projektancie wizualnym i projektowały formularz przy użyciu domyślnej czcionki .NET Framework. Ze względu na nową funkcję uruchamiania aplikacji projektant wizualizacji dokładnie odzwierciedla czcionkę domyślną. Ponadto projektant wizualizacji uwzględnia domyślną czcionkę ustawioną w pliku projektu.
Więcej projektantów środowiska uruchomieniowego
Projektanci, którzy istnieli w środowisku .NET Framework i umożliwiali tworzenie projektantów do ogólnego zastosowania, na przykład projektanta raportów, zostali dodani do środowiska .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 (Projektant Maskowanego Pola Tekstowego)
- 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
Ulepszenia wysokiej rozdzielczości DPI dla perMonitorV2
Ulepszono renderowanie o wysokiej rozdzielczości PerMonitorV2 DPI:
Kontrolki są tworzone z taką samą świadomością DPI jak aplikacja.
Kontrolki kontenerów i okna podrzędne MDI poprawiły zachowanie skalowania.
Na przykład na platformie .NET 5 przeniesienie aplikacji Windows Forms z monitora z 200% skalowaniem do monitora ze skalowaniem o 100% spowodowałoby nieprawidłowe rozmieszczenie kontrolek. Zostało to znacznie ulepszone na platformie .NET 6:
Nowe interfejsy API
- System.Windows.Forms.Application.SetDefaultFont
- System.Windows.Forms.Control.IsAncestorSiteInDesignMode
- System.Windows.Forms.ProfessionalColors.StatusStripBorder
- System.Windows.Forms.ProfessionalColorTable.StatusStripBorder
Nowe interfejsy API języka 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
Zaktualizowane interfejsy API
System.Windows.Forms.Control.Invoke teraz akceptuje System.Action i System.Func<TResult> jako parametry wejściowe.
System.Windows.Forms.Control.BeginInvoke teraz przyjmuje System.Action jako parametr wejściowy.
System.Windows.Forms.DialogResult jest rozszerzony o następujące funkcje:
TryAgain
Continue
System.Windows.Forms.Form ma nową właściwość: MdiChildrenMinimizedAnchorBottom
System.Windows.Forms.MessageBoxButtons jest rozszerzany o następujący członek:
CancelTryContinue
System.Windows.Forms.MessageBoxDefaultButton jest rozszerzany o następujący członek:
Button4
System.Windows.Forms.LinkClickedEventArgs Ma teraz nowy konstruktor i rozszerzony o następujące właściwości:
System.Windows.Forms.NotifyIcon.Text jest teraz ograniczony do 127 znaków (z 63).
Ulepszona dostępność
Wzorce automatyzacji interfejsu użytkownika firmy Microsoft działają lepiej z narzędziami ułatwień dostępu, takimi jak Narrator i Jaws.
Zobacz także
.NET Desktop feedback