2013-05-21 6 views
0

Dans mon application, j'ai une fonctionnalité qui permet à l'utilisateur de modifier les styles gras/italique/souligné du texte. Cependant, j'ai remarqué que lorsque l'utilisateur met le texte en gras, il retourne le texte à la taille et à la police par défaut et ALORS le met en gras. Évidemment, cela n'est pas souhaitable car cela signifierait alors que l'utilisateur devrait à nouveau changer la police et la taille du texte, ce qui n'est pas souhaitable.Comment arrêter mes options gras/italique/soulignement en changeant la police du texte à la police et la taille par défaut

Actuellement, le code pour rendre le texte gras dans le richtextbox de ma demande est:

richTextBoxPrintCtrl1.SelectionFont = new System.Drawing.Font(richTextBoxPrintCtrl1.Font, 
      richTextBoxPrintCtrl1.SelectionFont.Style^FontStyle.Bold); 

Où vais-je tort? Cela rend le texte gras, mais il rétablit le texte à la taille et à la police par défaut ... Cependant, la couleur n'est pas affectée.

Répondre

1

Essayez d'utiliser le code fourni par MSDN:

System.Drawing.Font currentFont = richTextBoxPrintCtrl1.SelectionFont; 
    System.Drawing.FontStyle newFontStyle; 

    if (richTextBoxPrintCtrl1.SelectionFont.Bold == true) 
    { 
    newFontStyle = FontStyle.Regular; 
    } 
    else 
    { 
    newFontStyle = FontStyle.Bold; 
    } 

    richTextBoxPrintCtrl1.SelectionFont = new Font(
    currentFont.FontFamily, 
    currentFont.Size, 
    newFontStyle 
); 

Modifier

Comme par suggestion @abalter je mets dans cette réponse l'exemple de code que j'écris dans un commentaire ci-dessous. Ce code correspond probablement mieux à ce qui a été demandé dans la question.

if (richTextBoxPrintCtrl1.SelectionFont.Bold == true) 
{ 
    newFontStyle = currentFont.Style^FontStyle.Regular; 
} 
else 
{ 
    newFontStyle = currentFont.Style | FontStyle.Bold; 
} 
+0

Hey. Merci pour l'exemple de code. J'ai essayé ceci, mais le seul problème est maintenant que je ne peux pas avoir deux styles différents (dire gras et souligné) à la fois. J'ai changé le reste de ce code et l'ai modifié pour remplacer "Bold" par italique/souligné/barré. Aucun conseil? – Toby

+1

Sur [cette page MSDN] (http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.DRAWING.FONTSTYLE%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK % 2cVERSION% 3dV4.0% 22% 29; k% 28DevLang-CSHARP% 29 & rd = true) indique que "l'énumération FontStyle a un attribut FlagsAttribute qui permet une combinaison bit à bit de ses valeurs membres." Lorsque vous créez l'objet "newFontStyle", essayez une combinaison de FontStyle nécessaire: 'newFontStyle = FontStyle.Bold | FontStyle.Italic' – Spaceman

+0

Pourriez-vous éventuellement fournir un exemple de code, s'il vous plaît? – Toby

Questions connexes