Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 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.
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:
- System.ComponentModel.Design.ComponentDesigner
- System.Windows.Forms.Design.ButtonBaseDesigner (Designer de Base de Botões no Windows Forms)
- 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 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:
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 é alargado com os seguintes membros:
TryAgain
Continue
System.Windows.Forms.Form tem um novo imóvel: MdiChildrenMinimizedAnchorBottom
System.Windows.Forms.MessageBoxButtons foi expandido com o seguinte elemento:
CancelTryContinue
System.Windows.Forms.MessageBoxDefaultButton foi expandido com o seguinte elemento:
Button4
System.Windows.Forms.LinkClickedEventArgs tem agora um novo construtor e foi estendido com as seguintes propriedades:
System.Windows.Forms.NotifyIcon.Text está agora limitado a 127 caracteres (de 63).
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
.NET Desktop feedback