2010-06-21 5 views
0

Nous savons tous que la classe de base Control a une méthode Scale. Le problème est le suivant: c'est de la merde absolue. Bien qu'il ajuste admirablement tous les contrôles, il n'évolue pas les polices. Donc, toutes mes étiquettes, boîtes de texte et boutons sont si bizarres. Il serait si simple de simplement boucler tous les contrôles du formulaire et de changer la police, mais Control.Font.Size est en lecture seule pour foreach (Control C dans this.Controls) {C.Font.Size = C.Font. Taille * .8f;} ne fera pas l'affaire.Mise à l'échelle de la police d'un contrôle en C# .Net

Quelle est la meilleure façon de mettre à l'échelle la police de chaque contrôle dans un formulaire lorsque le formulaire lui-même est mis à l'échelle?

Répondre

1

Pour modifier la taille de police d'un contrôle, vous devez créer un nouvel objet Police et l'affecter au contrôle.

Vous pouvez utiliser le Font object dans le contrôle existant en tant que modèle pour créer le nouvel objet de police, tout en changeant seulement les propriétés de police que vous voulez, ainsi:

myControl.Font = new Font(myControl.Font, 
    myControl.Font.Style | FontStyle.Bold); 

Il y a aussi un tutoriel de mise à l'échelle de la police avec un certain échantillon code ici: http://www.switchonthecode.com/tutorials/csharp-tutorial-font-scaling

+0

Belle trouvaille, merci! –

0

La mise à l'échelle des polices n'est pas si simple, car vous ne pouvez pas contrôler la hauteur et la largeur, vous avez une seule propriété: Size.

Ce que je fais habituellement est d'utiliser intensivement le TableLayoutPanel. Vous pouvez ensuite définir la police Size, et tous les contrôles devraient (si utilisé Docking et AutoSize correctement) mettre à l'échelle bien.

Oh, et changer la taille des caractères en définissant une propriété Font du Form à un new Font(...)