2009-08-09 11 views
4

Comme vous pouvez le voir dans le titre, j'ai un petit problème concernant l'affectation et la suppression de styles de format dans le contrôle RichTexBox et à partir de ce texte.Winforms RichtextBox Problème de formatage Gras/Italique/Souligné

Je sais comment faire du texte individuellement Gras/Italique/Souligné, mais pas une combinaison de ceux-ci. Je connais des manières qui peuvent accomplir ce caractère par caractère, mais cela semblerait long sur l'interface. Si cela peut être fait sans effort dans Wordpad, je suis sûr qu'il peut être réalisé ici!

N'existe-t-il pas une telle méthode ou une telle méthode qui me permet d'ajouter ou de supprimer un style de RichTextBox.SelectedFont?

Répondre

7

À moins que je comprends mal complètement la question

// Get the current text selection or to text entered after the insertion point. 
// Build new font based on the selection font, make it both Bold and Underline 
// Apply new font to currently selected text (or for new text at insertion point 

Font currFont = richTextBox.SelectionFont; 
Font boldUnderFont = new Font(currFont, FontStyle.Bold | FontStyle.Underline); 
richTextBox.SelectionFont = boldUnderFont; 
+0

Hey! Merci pour la réponse! Je ne l'ai pas encore essayé, et bien que cela semble bon pour ajouter des styles, comment l'enlever, dire "gras" d'un selectfont qui a une combinaison de style de gras, de soulignement et d'italique? – Shalan

+0

Oh attendez ... idéalement, cela peut être utilisé pour les deux! Laissez-moi essayer et revenir à vous. – Shalan

+0

Pour supprimer Bold ... Obtenir la police actuelle. ET avec un PAS sur le gras et réaffecter. – BlueShepherd

0

je devais faire même penser que vous deviez faire. Je vois que c'est un vieux poste. Cependant, pour ceux qui pourraient rencontrer le même problème. Vous ne pouvez pas appliquer un style de police, une famille de polices, ..., à une chaîne sauf si vous itérez caractère par caractère et que vous pouvez ainsi obtenir SelectionFont. Ceci est la méthode qui peut vous aider:

/// <summary> 
    /// Changes a font from originalFont appending other properties 
    /// </summary> 
    /// <param name="originalFont">Original font of text 
    /// <param name="familyName">Target family name 
    /// <param name="emSize">Target text Size 
    /// <param name="fontStyle">Target font style 
    /// <param name="enableFontStyle">true when enable false when disable 
    /// <returns>A new font with all provided properties added/removed to original font</returns> 
    private Font RenderFont(Font originalFont, string familyName, float? emSize, FontStyle? fontStyle, bool? enableFontStyle) 
    { 
     if (fontStyle.HasValue && fontStyle != FontStyle.Regular && fontStyle != FontStyle.Bold && fontStyle != FontStyle.Italic && fontStyle != FontStyle.Underline) 
      throw new System.InvalidProgramException("Invalid style parameter to ChangeFontStyleForSelectedText"); 

     Font newFont; 
     FontStyle? newStyle = null; 
     if (fontStyle.HasValue) 
     { 
      if (fontStyle.HasValue && fontStyle == FontStyle.Regular) 
       newStyle = fontStyle.Value; 
      else if (originalFont != null && enableFontStyle.HasValue && enableFontStyle.Value) 
       newStyle = originalFont.Style | fontStyle.Value; 
      else 
       newStyle = originalFont.Style & ~fontStyle.Value; 
     } 

     newFont = new Font(!string.IsNullOrEmpty(familyName) ? familyName : originalFont.FontFamily.Name, 
          emSize.HasValue ? emSize.Value : originalFont.Size, 
          newStyle.HasValue ? newStyle.Value : originalFont.Style); 
     return newFont; 
    } 

Pour plus de détails sur la façon de faire un contrôle richtexBox personnalisé vous pouvez aller à http://how-to-code-net.blogspot.ro/2014/01/how-to-make-custom-richtextbox-control.html