Question

J'ai le même code d'interface utilisateur en cours d'exécution sur ma machine anglaise XP et sur XP Japanese Machine. Pour une raison quelconque - le comportement est différent entre ces deux machines:

Sur la machine japonaise, l'événement OnResize est déclenché lors de l'appel initialiceComponent (je pense que de la fonction REMEMELAYOut). Sur la machine anglaise, ce n'est pas le cas.

J'ai une méthode de remplacement pour surraiser qui change les valeurs de mes variables privées que j'ai définies. Étant donné que le composant n'était pas entièrement chargé (le CTOR est toujours en cours d'exécution), ces variables sont nulles et j'obtiens une exception.

Je peux corriger le code en vérifiant si la variable est nulle ou non, mais je voudrais comprendre pourquoi elle est appelée en premier lieu et pourquoi elle ne se produit que sur cette machine.

Au cours de ma recherche sur le net, j'ai trouvé le même problème que quelqu'un d'autre a posté, mais sans solution (http://social.msdn.microsoft.com/forums/en/winforms/thread/95aefae4-45d8-4ac5-a8f2-6e2142dfb631).

Était-ce utile?

La solution

Divulgation appropriée: Je travaille avec Hila, j'ai donc pu voir le code. La raison du comportement différent était due à la propriété A du contrôle appelé autoscalemode. Dans la classe de base du contrôle, la valeur de cette propriété était autoscalemode.font. Étant donné que toutes nos machines R&D s'exécutent avec les mêmes paramètres (anglais), ils se sont comportés correctement et le bogue ne s'est pas produit là-bas. Le passage à une machine japonaise signifiait différents paramètres de police de ceux des machines anglaises. Cela a causé les ennuis. Nous avons donc modifié la valeur de la propriété AutoscaleMode à aucun et cela a résolu le problème. Conclusion: Méfiez-vous de la propriété AutoscaleMode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top