Pergunta

Eu tenho o mesmo código de UI em execução na minha máquina XP em inglês e na máquina XP em japonês.Por alguma razão - o comportamento é diferente entre essas duas máquinas:

Na máquina japonesa, o evento OnResize está sendo acionado durante a chamada InitializeComponent (acho que é da função ResumeLayout).Na máquina inglesa isso não acontece.

Eu tenho um método de substituição OnResize que altera os valores das minhas variáveis ​​​​privadas que defini.Como o componente não foi totalmente carregado (o Ctor ainda está em execução), essas variáveis ​​são nulas e recebo uma exceção.

Posso consertar o código verificando se a variável é nula ou não, mas gostaria de entender por que ela está sendo chamada e por que isso acontece apenas nesta máquina.

Durante minha pesquisa na net encontrei o mesmo problema que outra pessoa postou, mas sem solução (http://social.msdn.microsoft.com/Forums/en/winforms/thread/95aefae4-45d8-4ac5-a8f2-6e2142dfb631).

Foi útil?

Solução

Divulgação adequada: Estou trabalhando com Hila, então pude ver o código.O motivo do comportamento diferente foi devido a uma propriedade do controle chamada AutoScaleMode.Na classe base do controle o valor desta propriedade era AutoScaleMode.Font.Como todas as nossas máquinas de P&D estão rodando com as mesmas configurações (inglês), elas se comportaram corretamente e o bug não aconteceu aí.Mudar para uma máquina japonesa significou configurações de fonte diferentes daquelas das máquinas inglesas.Isso causou o problema.Então alteramos o valor da propriedade AutoScaleMode para None e isso resolveu o problema. Conclusão:cuidado com a propriedade AutoScaleMode.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top