web-dev-qa-db-fra.com

Rendre la police en italique et en gras

Comment appliquez-vous plusieurs styles de police au texte?

System.Drawing.Font MyFont = new System.Drawing.Font(
    thisTempLabel.LabelFont,
    ((float)thisTempLabel.fontSize),
    FontStyle.Bold + FontStyle.Italic,    // + obviously doesn't work, but what am I meant to do?
    GraphicsUnit.Pixel
);

Merci pour toute aide!

27
Tom Gullen
System.Drawing.Font MyFont = new System.Drawing.Font(
    thisTempLabel.LabelFont,
    ((float)thisTempLabel.fontSize),
    FontStyle.Bold | FontStyle.Italic,    // + obviously doesn't work, but what am I meant to do?
    GraphicsUnit.Pixel
);

Vous souhaitiez peut-être utiliser l'opérateur OR (|)

46

FontStyle est une énumération d'indicateurs et vous pouvez donc définir plusieurs styles en:

FontStyle.Bold | FontStyle.Italic
10
anothershrubery

Je pense que c'est FontStyle.Bold | FontStyle.Italic

Vous utilisez généralement le symbole de canal (OR au niveau du bit) pour combiner plusieurs indicateurs dans ces fonctions

Cette page l'explique

http://www.blackwasp.co.uk/CSharpLogicalBitwiseOps_2.aspx

4
Gordon Thompson

Salut, j'écrivais un simple éditeur de texte et j'ai eu le même problème, je n'ai rien trouvé d'utile sur Internet. La méthode if, else if n'est pas optimale s'il y a beaucoup de boutons dans le formulaire, alors j'ai pensé pourquoi ne pas prendre le font.style existant et simplement l'ajouter en utilisant | symbole comme les personnes suggérées ci-dessus. J'ai testé ce code et ça marche. J'appelle cette méthode depuis pictureBox je clique.

Mise à jour. J'ai trouvé un bug. lorsque vous désélectionnez une police, elle réinitialise également toutes les autres polices. Mais le code qui les combine fonctionne.

private void ChangeFontStyle(PictureBox p)
        {
            if (p == pictureBox1)
            {
                if (BClicked)
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Bold);
                }
                else 
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
                }
            }
            else if (p == pictureBox2)
            {
                if (IClicked)
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Italic);
                }
                else 
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font,  richTextBox1.Font.Style | FontStyle.Regular);
                }
            }
            else if (p == pictureBox3)
            {
                if (UClicked)
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.SelectionFont.Style | FontStyle.Underline);
                }
                else
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
                }
            }
        }         

P.S J'ai utilisé des boîtes d'image au lieu de boutons et des variables booléennes comme BClicked indiquent si elles sont activées ou non.

2
user3552161

Je pense que vous pourriez bénéficier d'une classe Font:

/*controlName*/.SelectionFont=new Font(maintext.Font, FontStyle.Italic);
1
Edward Karak