Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve alguns dos novos recursos e aprimoramentos do Windows Forms no .NET 6.
Há algumas alterações significativas 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 no escopo do arquivo e tipos de referência anuláveis por padrão.
Um recurso dos novos modelos C# que não foram levados 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.
Inicialização de novo 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 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 seguinte código:
public static void Initialize()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
}
O novo código de inicialização é 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 definidas.
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 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 Designer Visual do Windows Forms usa essas configurações. Para obter mais informações, consulte a seção 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 alinhou melhor às diretrizes de experiência do usuário (UX) do Windows. No entanto, o .NET Framework usa 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 do 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
Esta é a maneira 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 ao 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 projetando o formulário com a fonte padrão do .NET Framework. Devido ao novo novo recurso de inicialização 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.
Mais designers de runtime
Os designers que existiam no .NET Framework e habilitaram a criação de um designer de uso geral, por exemplo, a criação de um designer de relatório, foram adicionados ao .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
Melhorias de alto DPI para PerMonitorV2
A renderização de alto DPI com PerMonitorV2 foi aprimorada:
Os controles são criados com o mesmo reconhecimento de DPI que o aplicativo.
Os controles de contêiner e as janelas filho do MDI melhoraram os comportamentos de dimensionamento.
Por exemplo, no .NET 5, mover um aplicativo Windows Forms de um monitor com dimensionamento de 200% para um monitor com dimensionamento de 100% resultaria em controles mal colocados. Isso foi muito melhorado no .NET 6:
Melhorias de DPI alto no .NET 6 para Windows Forms
Novas APIs
- System.Windows.Forms.Application.SetDefaultFont
- System.Windows.Forms.Control.IsAncestorSiteInDesignMode
- System.Windows.Forms.ProfessionalColors.StatusStripBorder
- System.Windows.Forms.ProfessionalColorTable.StatusStripBorder
Novas APIs do 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
APIs atualizadas
System.Windows.Forms.Control.Invoke agora aceita System.Action e System.Func<TResult> como parâmetros de entrada.
System.Windows.Forms.Control.BeginInvoke agora aceita System.Action como um parâmetro de entrada.
System.Windows.Forms.DialogResult é estendido com os seguintes membros:
TryAgainContinue
System.Windows.Forms.Form tem uma nova propriedade: MdiChildrenMinimizedAnchorBottom
System.Windows.Forms.MessageBoxButtons é estendido com o seguinte membro:
CancelTryContinue
System.Windows.Forms.MessageBoxDefaultButton é estendido com o seguinte membro:
Button4
System.Windows.Forms.LinkClickedEventArgs agora tem um novo construtor e estendido com as propriedades a seguir:
System.Windows.Forms.NotifyIcon.Text agora está limitado a 127 caracteres (de 63).
Acessibilidade 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.
Consulte também
.NET Desktop feedback