ScaleControl chamado somente quando necessário
O dimensionamento geralmente é necessário somente quando um aplicativo está em execução no modo SystemAware ou PerMonitorV2 e o monitor tem configurações de DPI personalizadas que diferem do computador em que o aplicativo foi projetado. Nesses cenários, o runtime do Windows Forms calcula o fator de escala com base nas configurações de DPI personalizadas do monitor e chama ScaleControl(SizeF, BoundsSpecified) com o novo fator de escala. Para melhorar o desempenho, ScaleControl
agora é chamado apenas quando o fator de escala calculado for algo diferente de 1.0F (ou seja, o dimensionamento é necessário). Essa alteração poderá interromper seu aplicativo se ele substituir ScaleControl
e executar ações personalizadas na substituição.
Versão introduzida
Manutenção do .NET 6 6.0.101
Comportamento antigo
Na versão do .NET 6 GA e nas versões anteriores, a API ScaleControl(SizeF, BoundsSpecified) pública virtual era chamada sempre que PerformAutoScale() era chamado no controle de contêiner do aplicativo. Ou seja, o método era chamado sempre que houvesse uma alteração de layout ou fonte, independentemente de o dimensionamento ser necessário.
Novo comportamento
A partir das versões de manutenção do .NET 6, ScaleControl(SizeF, BoundsSpecified) é chamado somente quando há a necessidade de dimensionar o formulário ou controle. O runtime do Windows Forms calcula o fator de escala com base nas configurações de DPI personalizadas do monitor e nas configurações de DPI do monitor no qual o aplicativo foi projetado. ScaleControl(SizeF, BoundsSpecified) será chamado somente se o fator de escala indicar que o dimensionamento é necessário.
Categoria da alteração
Essa alteração afeta a compatibilidade de origem.
Motivo da alteração
Essa alteração foi feita para melhorar o desempenho e evitar layouts desnecessários.
Ação recomendada
Verifique se o código executa ações personalizadas e não dimensionáveis nesses métodos substituíveis.