Partilhar via


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.

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

Consulte também