Compartilhar via


Novidades do .NET 6 (Windows Forms .NET)

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

Há algumas alterações recentes que você deve estar ciente ao migrar do .NET Framework para o .NET 6. Para obter mais informações, consulte Alterações recentes 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 Windows Forms típico 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 bootstrap de aplicativo

Os modelos que geram um novo aplicativo do Windows Forms criam um Main método que serve como ponto de entrada para seu aplicativo quando ele é executado. Esse 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, chamado pelo ApplicationConfiguration.Initialize método.

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 pode controlar essas configurações agora também, e você pode evitar configurá-lo no código. Por exemplo, o método gerado é semelhante ao seguinte código:

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 método, o ApplicationConfiguration.Initialize Windows Forms Visual Designer não respeitará as configurações de bootstrap definidas.

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

Configurações de aplicativo em nível de projeto

Para complementar o novo recurso de bootstrap do aplicativo do Windows Forms, algumas Application configurações definidas anteriormente 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 padrão API correspondente
ApplicationVisualStyles true Application.EnableVisualStyles
ApplicationUseCompatibleTextRendering false Application.SetCompatibleTextRenderingDefault
ApplicationHighDpiMode 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. Essa fonte se alinhava melhor às 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 de pixels do .NET Framework para o .NET. A única maneira de alterar a fonte de todo o aplicativo era editar todos os formulários no projeto, definindo a Font propriedade como 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 usada pelo código de bootstrap do aplicativo:

    Importante

    Esse é o caminho preferido. Usar o projeto para configurar o novo sistema de bootstrap 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 de 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());
        }
    }
    

Aprimoramentos do 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 Segoe UI 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 definida no arquivo de projeto.

Windows Forms designer is using the default font setting in Visual Studio

Mais designers de tempo de execução

Os designers que existiam no .NET Framework e habilitavam a criação de um designer de uso geral, por exemplo, criando um designer de relatório, 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 filhas MDI melhoraram os comportamentos de dimensionamento.

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

    High DPI improvements in .NET 6 for Windows Forms

Novas APIs

Novas APIs do Visual Basic

APIs atualizadas

Acessibilidade do aprimorada

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.

Confira também