Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo fornece uma visão geral de alto nível sobre as novidades do Windows Forms (WinForms) no .NET 10. Para obter informações detalhadas, consulte os anúncios de lançamento. Use os anúncios de lançamento para obter uma visão geral de toda a versão do .NET 10. O restante das seções destaca algumas das alterações mais importantes no Windows Forms.
O .NET 10 foi lançado em novembro de 2025.
Anúncios de lançamento
Cada anúncio de lançamento fornece informações detalhadas sobre as alterações do Windows Forms para .NET 10:
- .NET 10
- .NET 10 RC2
- .NET 10 RC1
- .NET 10 Visualização 7
- .NET 10 Visualização 6
- .NET 10 Prévia 5
- .NET 10 Pré-visualização 4
- .NET 10 Prévia 3
- .NET 10 Visualização 2
- .NET 10 Prévia 1
Alterações na área de transferência
O Windows Forms está enviando um novo código para a API da área de transferência. A área de transferência foi redesenhada de forma que seu código possa ser compartilhado com o Windows Presentation Foundation (WPF). Ambas as tecnologias de desktop agora compartilham o mesmo código e unificam a forma como interagem com a área de transferência. Para obter mais informações, consulte Clipboard no Windows Forms e as alterações do DataObject no .NET 10.
.NET 9 obsoletou BinaryFormatter, que é usado em algumas operações da área de transferência. Essas operações da área de transferência exigiam que o utilizador aceitasse o pacote de compatibilidade ou encontrasse uma alternativa à operação. Para aliviar a dificuldade de se afastar do BinaryFormatter, o .NET 10 está tornando obsoletos certos métodos da área de transferência para indicar que não devem ser utilizados. Mais métodos estão a ser adicionados para ajudar a serialização JSON com dados da área de transferência, contornando a necessidade de BinaryFormatter.
Formulários assíncronos
O Windows Forms tem suporte a formulários assíncronos totalmente integrados. Além disso, a tarefa assíncrona agora tem uma referência fraca ao formulário, permitindo UIs responsivas ao gerenciar várias janelas.
O Windows Forms para .NET 9 introduziu novos métodos para oferecer suporte à exibição de formulários e caixas de diálogo de forma assíncrona, mas em um modo de visualização opcional em que você tinha que suprimir o erro do compilador WFO5002 usar o recurso. Este erro do compilador não é mais acionado com o .NET 10.
As seguintes APIs não são mais consideradas experimentais:
Melhorias no design personalizado
Vários tipos de UITypeEditor foram portados do .NET Framework, incluindo ToolStripCollectionEditor e vários editores relacionados ao controle DataGridView. Esses editores agora podem ser descobertos pelo PropertyGrid e pelo painel Ações do Windows Forms Designer.
Os SnapLines foram corrigidos para designers personalizados.
Modo escuro
O Windows Forms tem suporte ao modo escuro totalmente integrado.
O Windows Forms para .NET 9 introduziu o estilo visual preliminar do modo escuro, mas em modo de pré-visualização opcional em que você tinha que suprimir o Erro do Compilador WFO5001 para usar o recurso. Esse recurso não é mais protegido por trás desse erro de compilador começando com o .NET 10.
A Application.SetColorMode(SystemColorMode) API não é mais considerada experimental.
Esclarecimento sobre o uso de ControlStyles ApplyThemingImplicitly
Os controles seguem o modo de cor definido para o aplicativo, escuro ou claro. No entanto, pode haver um caso em que você está compondo e desenhando seus próprios controles, mas usa controles comuns existentes do Win32, como a barra de rolagem. Esses controles permanecem de cor clara, a menos que você opte por aplicar o tema antes que a CreateParams propriedade seja lida. Também pode haver um caso em que você herda um controle que já segue o tema e queira desativar para controlar totalmente o desenho, como com um Button.
Independentemente do seu caso de uso, substitua a propriedade Control.CreateParams e chame SetStyle(ControlStyles.ApplyThemingImplicitly, true) (opt-in) ou SetStyle(ControlStyles.ApplyThemingImplicitly, false) (opt-out) antes de os parâmetros serem lidos da classe base. Você não pode definir esse estilo em seu construtor. O construtor base lê a propriedade CreateParams antes de chamar o seu construtor. O trecho de código a seguir mostra como aceitar:
public partial class CustomControl1 : Control
{
protected override CreateParams CreateParams
{
get
{
// Set this style BEFORE base.CreateParams is created and returned.
SetStyle(ControlStyles.ApplyThemingImplicitly, true);
CreateParams cp = base.CreateParams;
// Other logic
return cp;
}
}
// Base class constructor is going to read CreateParams property
// before your constructor code runs.
public CustomControl1()
{
// At this point, CreateParams property is already read, you
// can't set ApplyThemingImplicitly here.
InitializeComponent();
}
}
Public Class CustomControl1
Protected Overrides ReadOnly Property CreateParams As CreateParams
Get
' Set this style BEFORE base.CreateParams is created and returned.
SetStyle(ControlStyles.ApplyThemingImplicitly, True)
Dim cp As CreateParams = MyBase.CreateParams
' Other logic
Return cp
End Get
End Property
' Base class constructor is going to read CreateParams property
' before your constructor code runs.
Sub New()
' At this point, CreateParams property is already read, you
' can't set ApplyThemingImplicitly here.
InitializeComponent()
End Sub
End Class
Correções de erros
Aqui estão alguns dos bugs corrigidos no Windows Forms para .NET 10:
- Se o DataGridView estava no modo de edição enquanto a caixa de diálogo de hospedagem estava fechada, ele lançaria
InvalidOperationException. O bug que causava isso foi corrigido. -
Erro do Compilador WFO1000 foi melhorado para reduzir falsos positivos relacionados com interfaces que derivam do
IComponent. - Corrigida uma regressão em que
PrinterSettings.DefaultPageSettings.Colordevolvia um valor incorreto. - Resolução de uma fuga de memória no componente MSHTML .
Acessibilidade
Suporte melhorado ao leitor de ecrã NVDA.
Limpeza de código
Removidas as referências ao runtime do .NET preterido e aos pacotes desnecessários. O estilo do código foi aperfeiçoado para resolver avisos e melhorar a qualidade do código.
API do Modo de Captura de Ecrã
Uma nova API foi introduzida para impedir que aplicativos de captura de tela (que usam a API do Windows) capturem um formulário. Esse recurso é útil para proteger informações confidenciais, como nomes de usuário, IDs de usuário ou senhas, de vazamentos.
O Form.ScreenCaptureMode é definido como um dos seguintes valores para controlar o comportamento de captura:
-
Allow—(Padrão) Permite que o formulário seja capturado. -
HideContent—O formulário aparece escurecido quando capturado. -
HideWindow—Desfoca o formulário quando capturado. (Requer Windows 10 20H1 versão 2004 ou superior.)
Melhorias no analisador
Os analisadores existentes foram ajustados para reduzir os falsos positivos.
Novos analisadores foram adicionados:
-
Aviso WFDEV004 -
Form.OnClosing,Form.OnClosede os eventos correspondentes estão obsoletos. - Aviso WFDEV005 -
GetDataos métodos estão obsoletos. Use métodosTryGetData<T>em vez disso. - Aviso WFDEV006 - Alguns controles estão obsoletos. Eles são fornecidos para compatibilidade binária com o .NET Framework.
.NET Desktop feedback