Udostępnij za pośrednictwem


Co nowego w formularzach systemu Windows dla platformy .NET 6

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.

Projektant formularzy systemu Windows używa domyślnego ustawienia czcionki w programie Visual Studio

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.

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:

    Ulepszenia wysokiej rozdzielczości DPI na platformie .NET 6 dla formularzy Windows Forms

Nowe interfejsy API

Nowe interfejsy API języka Visual Basic

Zaktualizowane interfejsy API

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