Partilhar via


O que há de novo no Windows Forms para .NET 6

Este artigo descreve alguns dos novos recursos e aprimoramentos do Windows Forms no .NET 6.

Há algumas alterações importantes que você deve estar ciente ao migrar do .NET Framework para o .NET 6. Para obter mais informações, consulte Alterações significativas no Windows Forms.

Modelos atualizados para C#

O .NET 6 introduziu muitas alterações nos modelos de aplicativo de console padrão. De acordo com essas alterações, os modelos do Windows Forms para C# foram atualizados para habilitar global using diretivas, namespaces com escopo de arquivo e tipos de referência anuláveis por padrão.

Um recurso dos novos modelos C# que não foi levado adiante com o Windows Forms são as instruções de nível superior. O aplicativo típico do Windows Forms requer o [STAThread] atributo e consiste em vários tipos divididos em vários arquivos, como os arquivos de código do designer, portanto, usar instruções de nível superior não faz sentido.

Novo início de aplicativo

Os modelos que geram um novo aplicativo Windows Forms criam um Main método que serve como o ponto de entrada para seu aplicativo quando ele é executado. Este método contém código que configura o Windows Forms e exibe o primeiro formulário, conhecido como o código de bootstrap:

class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

No .NET 6, esses modelos foram modificados para usar o novo código de bootstrap, invocado pelo método ApplicationConfiguration.Initialize.

class Program
{
    [STAThread]
    static void Main()
    {
        ApplicationConfiguration.Initialize();
        Application.Run(new Form1());
    }
}

Esse método é gerado automaticamente em tempo de compilação e contém o código para configurar o Windows Forms. O arquivo de projeto também pode controlar essas configurações agora e você pode evitar configurá-lo no código. Por exemplo, o método gerado é semelhante ao código a seguir:

public static void Initialize()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.SetHighDpiMode(HighDpiMode.SystemAware);
}

O novo código de bootstrap é usado pelo Visual Studio para configurar o Windows Forms Visual Designer. Se você optar por não usar o novo código de bootstrap, restaurando o código antigo e ignorando o ApplicationConfiguration.Initialize método, o Windows Forms Visual Designer não respeitará as configurações de bootstrap que você definiu.

As configurações geradas no Initialize método são controladas pelo arquivo de projeto.

Configurações do aplicativo no nível do projeto

Para complementar o novo recurso de bootstrap do aplicativo do Windows Forms, algumas Application configurações previamente definidas no código de inicialização do aplicativo devem ser definidas no arquivo de projeto. O arquivo de projeto pode definir as seguintes configurações do aplicativo:

Configuração do projeto Valor predefinido API correspondente
ApplicationVisualStyles true Application.EnableVisualStyles
ApplicationUseCompatibleTextRendering false Application.SetCompatibleTextRenderingDefault
AplicaçãoHighDpiMode SystemAware Application.SetHighDpiMode
ApplicationDefaultFont Segoe UI, 9pt Application.SetDefaultFont

O exemplo a seguir demonstra um arquivo de projeto que define essas propriedades relacionadas ao aplicativo:

<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>

O Windows Forms Visual Designer usa essas configurações. Para obter mais informações, consulte a seção de aprimoramentos do designer do Visual Studio.

Alterar a fonte padrão

O Windows Forms no .NET Core 3.0 introduziu uma nova fonte padrão para o Windows Forms: Segoe UI, 9pt. Esta fonte está mais alinhada com as diretrizes de experiência do usuário (UX) do Windows. No entanto, o .NET Framework usa o Microsoft Sans Serif, 8.25pt como a fonte padrão. Essa alteração tornou mais difícil para alguns clientes migrar seus aplicativos grandes que utilizavam um layout perfeito em pixels do .NET Framework para o .NET. A única maneira de alterar a fonte para todo o aplicativo era editar todos os formulários no projeto, definindo a Font propriedade para uma fonte alternativa.

A fonte padrão agora pode ser definida de duas maneiras:

  • Defina a fonte padrão no arquivo de projeto a ser usado pelo código de inicialização do aplicativo :

    Importante

    Esta é a forma preferida. Usar o projeto para configurar o novo sistema de inicialização do aplicativo permite que o Visual Studio use essas configurações no designer.

    No exemplo a seguir, o arquivo de projeto configura o Windows Forms para usar a mesma fonte que o .NET Framework usa.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <!-- other settings -->
    
      <PropertyGroup>
        <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>
      </PropertyGroup>
    
    </Project>
    

- ou -

  • Chame a Application.SetDefaultFont API da maneira antiga (mas sem suporte a designer):

    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());
        }
    }
    

Melhorias no designer do Visual Studio

O Windows Forms Visual Designer agora reflete com precisão a fonte padrão. As versões anteriores do Windows Forms para .NET não exibiam corretamente a fonte da interface do usuário Segoe no Visual Designer e, na verdade, estavam criando o formulário com a fonte padrão do .NET Framework. Devido ao novo recurso de bootstrap do aplicativo , o Visual Designer reflete com precisão a fonte padrão. Além disso, o Visual Designer respeita a fonte padrão que é definida no arquivo de projeto.

O designer do Windows Forms está usando a configuração de fonte padrão no Visual Studio

Mais designers de tempo de execução

Os designers que existiam no .NET Framework e habilitaram a criação de um designer de uso geral, por exemplo, criando um designer de relatórios, foram adicionados ao .NET 6:

Melhorias de alto DPI para PerMonitorV2

A renderização de alto DPI com PerMonitorV2 foi melhorada.

  • Os controles são criados com o mesmo reconhecimento de DPI que o aplicativo.

  • Os controles de contêiner e as janelas filho MDI melhoraram os comportamentos de dimensionamento.

    Por exemplo, no .NET 5, mover um aplicativo do Windows Forms de um monitor com dimensionamento de 200% para um monitor com dimensionamento de 100% resultaria em controles extraviados. Isso foi muito melhorado no .NET 6:

    Melhorias de alto DPI no .NET 6 para Windows Forms

Novas APIs

Novas APIs do Visual Basic

APIs atualizadas

Acessibilidade melhorada

Os padrões de automação da interface do usuário da Microsoft funcionam melhor com ferramentas de acessibilidade como o Narrador e o Jaws.

Ver também