2010-08-05 7 views
0

Je développe une application C# Windows. Il comprend 22 formes de style (c'est-à-dire police, couleur de fond, italique, couleur de cellule, texte avant couleur). J'ai créé une fonction pour ce faire, je reçois un erreur.Styling C# forms

Mon code:

foreach (Control cnn in gbsty.Controls) 
{ 
    if (cnn is Label) 
    { 
     if (cnn.Name=="lblheadername") 
     { 
      cnn.Font = FontStyle.Bold; 
     } 
    } 
} 

Erreur:

Cannot implicitly convert type 'System.Drawing.FontStyle' to 'System.Drawing.Font'

Répondre

3
cnn.Font = new Font(cnn.Font, FontStyle.Bold); 

Voir plus de constructeurs sur MSDN

1

De plus, si vous voulez avoir la police commune, étiquette, zone de texte, etc. ... il pourrait être mieux pour vous de créer votre propre bibliothèque de classe (comme je l'ai fait, et probablement d'autres aussi) qui sont dérivés de la classe de base (comme label, textbox, etc.) et forcent leur paramètre de police par défaut à une taille, une couleur, etc., puis ajoutez THOSE à vos formulaires et ils auront tous les mêmes styles appliqués.

Pour empêcher l'IDE d'enregistrer les informations de police (ou autres que vous personnalisez) dans le formulaire et d'obtenir directement à partir de la définition de classe, vous pouvez faire l'une des deux façons (que je sache) ... Ex : sous C#

public class MyCustomLabel : Label 
{ 
    // Either use the [DesignerSerialization...] 
    // OR override and make the FONT as READ-ONLY (via only a GETTER) 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
    public override Font Font 
    { get { return new Font("Arial", 9F, FontStyle.Regular, GraphicsUnit.Point);; } } 

    ... 
    ... 

} 

Si lecture seule, les concepteurs de formulaires se nag d'une erreur sur la valeur en cours de lecture seule comme il a été mis en forme, mais une fois que vous supprimez cet élément « police », vous Je n'aurai plus jamais à revoir ce message. Ensuite, si vous voulez changer cette police, la taille, la couleur, etc, il suffit de le changer dans votre baseclass. De plus, à partir de là, si vous vouliez créer un type d'étiquette "HEADER" comme gras ou autre, dérivez simplement de votre baseclass et remplacez à nouveau la définition FONT, mais avec ses paramètres gras/taille/couleur ...

public class MyHeaderLabel : MyCustomLabel 
{ 
    public override Font Font 
    { get { return new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Point); } 

} 

}