2010-03-23 14 views
1

J'ai un contrôle utilisateur contenu dans un onglet. Le formulaire a défini AutoScaleMode = AutoScaleMode.Font et le contrôle UserControl a défini AutoScaleMode.Inherit.AutoScaleMode.Inherit n'hérite pas

Maintenant, lorsque j'agrandis la taille de police du formulaire, la police est également agrandie dans le contrôle utilisateur, mais le contenu des contrôles n'est pas mis à l'échelle. Si je définis explicitement AutoScaleMode.Font sur le contrôle utilisateur, alors il fonctionne correctement.

Ne devrait pas AutoScaleMode.Inherit travail de cette façon?

Répondre

1

MSDN a un avertissement explicite donné:

Dans les versions .NET Framework 1.0 et 1.1 , mise à l'échelle automatique a été pris en charge au moyen d'un mécanisme plus simple qui a toujours appuyé sur la police du système actuel. Ce mécanisme est maintenant obsolète mais toujours pris en charge pour la compatibilité arrière. Vous pouvez obtenir le comportement d'échelle plus en définissant la propriété AutoScale du contenant forme true, qui sera également mis implicitement la ContainerControl.AutoScaleMode propriété Aucun. Inversement, la définition de la propriété ContainerControl.AutoScaleMode d'un formulaire définira AutoScale sur false, ce qui active le nouveau mécanisme de mise à l'échelle introduit avec le .NET Framework version 2.0.

donc: première question: quelle version du framework utilisez-vous? Deuxième supposition: votre contrôle est-il ajouté après l'initialisation du formulaire?

+0

Iam utilisant framework 2.0. Non, tout est fait au moment du design. – codymanix

+0

Je pense que nous avons ici une partie de la réponse parce que si votre contrôle est ajouté au moment du design, probablement que le Framework ne propagera pas le mode scale au contrôle utilisateur car le formulaire a déjà tout à traiter dans l'interface utilisateur. – Samuel