Os formulários de nível superior dimensionam o tamanho mínimo e máximo para DPI
Os formulários de nível superior no Windows Forms agora dimensionam seus MinimumSize e MaximumSize valores de acordo com os pontos por polegada (DPI) do monitor durante a execução no HighDpiMode.PerMonitorV2 modo.
Versão introduzida
.NET 8 Visualização 1
Comportamento anterior
No .NET 8, os MinimumSize valores e MaximumSize para formulários de nível superior permaneceram constantes, independentemente do modo DPI do aplicativo e do DPI do monitor onde o formulário é renderizado. Isso às vezes resultava em limitações de escala do formulário de nível superior.
Você também pode optar por esse comportamento no .NET 7. Para aceitar, defina a opção de configuração de System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
tempo de execução descrita na seção Ação recomendada.
Novo comportamento
A partir do .NET 8, os formulários de nível superior dimensionam seus MinimumSize e MaximumSize valores de acordo com o DPI do monitor quando executados no HighDpiMode.PerMonitorV2 modo. O comportamento do seu aplicativo pode mudar das seguintes maneiras:
- As dependências em tempo de execução podem ser afetadas quando o tamanho mínimo e máximo do formulário é alterado.
- Novos MinimumSizeChanged e MaximumSizeChanged eventos podem ser levantados.
- O tamanho do formulário dimensionado agora tem novos valores de restrição para os tamanhos mínimo e máximo.
Alterar categoria
Esta mudança é uma mudança comportamental.
Razão para a alteração
Essa alteração faz parte de um esforço mais amplo para melhorar a experiência do usuário do Windows Forms em monitores de alto DPI. Ele permite que os desenvolvedores definam tamanhos mínimos e máximos para formulários de nível superior sem ter que levar em conta o DPI do monitor.
Ação recomendada
Se o novo comportamento for problemático para você, você pode desativar definindo System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
como false
no arquivo runtimeconfig.json .
runtimeconfig.template.json arquivo de modelo:
{
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
[appname].runtimeconfig.json arquivo de saída:
{
"runtimeOptions": {
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
}
APIs afetadas
N/A