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 8.
Há algumas alterações significativas que você deve estar ciente ao migrar do .NET Framework para o .NET 8. Para obter mais informações, consulte Alterações significativas no Windows Forms.
Melhorias na associação de dados
Um novo mecanismo de associação de dados estava em versão prévia com o .NET 7 e agora está totalmente habilitado no .NET 8. Embora não seja tão extenso quanto o mecanismo de associação de dados existente do Windows Forms, esse novo mecanismo é modelado após o WPF, o que facilita a implementação de princípios de design MVVM.
Os recursos de associação de dados aprimorados tornam mais simples utilizar totalmente o padrão MVVM e empregar mapeadores relacionais de objeto do ViewModels nos Windows Forms. Isso reduz a quantidade de código em arquivos de código auxiliar. Mais importante, ele permite o compartilhamento de código entre os Windows Forms e outras estruturas de GUI do .NET, como WPF, UWP/WinUI e .NET MAUI. É importante observar que, embora as estruturas de GUI mencionadas anteriormente usem XAML como uma tecnologia de interface do usuário, o XAML não está chegando ao Windows Forms.
A IBindableComponent interface e a BindableComponent classe conduzem o novo sistema de associação. Control implementa a interface e fornece novos recursos de associação de dados para o Windows Forms.
Comandos de botão
Os comandos de botão estavam em versão prévia com o .NET 7 e agora estão totalmente habilitados no .NET 8. Semelhante ao WPF, a instância de um objeto que implementa a ICommand interface pode ser atribuída à propriedade do Command botão. Quando o botão é clicado, o comando é invocado.
Um parâmetro opcional pode ser fornecido quando o comando é invocado, especificando um valor para a propriedade do CommandParameter botão.
As propriedades Command
e CommandParameter
são definidas no designer por meio da janela Propriedades, em (DataBindings), conforme ilustrado pela imagem a seguir.
Os botões também escutam o evento ICommand.CanExecuteChanged, fazendo com que o controle consulte o método ICommand.CanExecute. Quando esse método retorna true
, o controle é habilitado; o controle é desabilitado quando false
é retornado.
Aprimoramentos de DPI do Visual Studio
O Visual Studio 2022 17.8 apresenta guias de designer que não reconhecem DPI. Anteriormente, a guia Designer do Windows no Visual Studio era executada no DPI do Visual Studio. Isso causa problemas ao criar um aplicativo Windows Forms sem conhecimento de DPI. Agora você pode garantir que o designer funcione na mesma escala em que você deseja que o aplicativo opere, seja compatível com DPI ou não. Antes de este recurso ser introduzido, você precisava executar o Visual Studio no modo sem suporte a DPI, o que fazia o Visual Studio ficar embaçado quando o dimensionamento era aplicado no Windows. Agora você pode deixar o Visual Studio de lado e permitir que o designer funcione sem reconhecimento de DPI.
Você pode habilitar o designer sem reconhecimento de DPI para o projeto do Windows Forms adicionando <ForceDesignerDPIUnaware>
ao arquivo de projeto e definindo o valor como true
.
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
<ApplicationHighDpiMode>DpiUnawareGdiScaled</ApplicationHighDpiMode>
</PropertyGroup>
Importante
O Visual Studio lê essa configuração quando o projeto é carregado e não quando ele é alterado. Depois de alterar essa configuração, descarregue e recarregue seu projeto para que o Visual Studio o respeite.
Melhorias elevadas do PPP
A renderização de DPI alta com PerMonitorV2 foi aprimorada:
Dimensione corretamente os controles aninhados. Por exemplo, um botão que está em um painel colocado em uma aba.
Dimensionar as propriedades Form.MaximumSize e Form.MinimumSize com base nas configurações de DPI do monitor atual.
A partir do .NET 8, esse recurso é habilitado por padrão e você precisa desativá-lo para voltar ao comportamento anterior.
Para desabilitar o recurso, adicione
System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
àconfigProperties
configuração em runtimeconfig.jsone defina o valor como false:{ "runtimeOptions": { "tfm": "net8.0", "frameworks": [ ... ], "configProperties": { "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false, } } }
Melhorias diversas
Aqui estão algumas outras alterações notáveis:
- O código que manipulava
FolderBrowserDialog
foi aprimorado, corrigindo alguns vazamentos de memória. - A base de código do Windows Forms tem habilitado lentamente a anulabilidade em C#, eliminando possíveis erros de referência nula.
- O
System.Drawing
código-fonte foi migrado para o repositório GitHub do Windows Forms. - Ícones modernos do Windows podem ser acessados por uma nova API. System.Drawing.SystemIcons.GetStockIcon A System.Drawing.StockIconId enumeração lista todos os ícones do sistema disponíveis.
- Mais designers estão disponíveis em tempo de execução agora. Para obter mais informações, consulte o problema do GitHub nº 4908.
.NET Desktop feedback