2010-11-02 6 views
7

Comment peut-on formater le texte dans la zone de texte riche comme les suivantestexte Format Rich Text Box

02/11/2010 - 17:15 - Adam: Une autre note de test ajouté le 2 Novembre

02/11/2010 - 17:14 - Z_kas: Notes de test. STAGE A CHANGÉ: N Enq - Envoyer un devis

02/11/2010 - 17:12 - user32: Une autre note de test ajouté le 2 Novembre

Merci

+0

duplication possible de [Changer la couleur du texte dans un WinForms RichTextBox] (http://stackoverflow.com/questions/2527700/change-color-of-text-within-a-winforms-richtextbox) – Oliver

Répondre

17

comme indiqué par d'autres, il y a une duplication possible avec une question antérieure. Cependant, veuillez voir un extrait de code ci-dessous. Vous n'avez pas à obtenir la longueur du texte que vous ajoutez afin de changer sa mise en forme, il suffit de définir le format avant de l'ajouter. Cela (je pense) donne de meilleures performances si vous avez beaucoup de texte dans la zone de texte.

Cela fonctionnera tant qu'il n'y a pas de sélections dans la zone de texte par l'utilisateur, alors il se passera des choses étranges que je ne peux pas expliquer. Peut-être que quelqu'un d'autre peut nous éclairer? Le même problème apparaît avec la solution proposée dans Change color of text within a WinForms RichTextBox. J'ai remplacé le ":" que vous aviez après le nom d'utilisateur juste pour que mon exemple de code fonctionne plus facilement avec la chose DateTime, cela peut être facilement modifié dans le "Split".

 private void AddText(string text) 
    { 
     string[] str = text.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); 

     if (str.Length == 2) 
     { 
      richTextBox1.DeselectAll(); 
      richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Bold); 
      richTextBox1.AppendText(Environment.NewLine + str[0] + ";"); 
      richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Regular); 
      richTextBox1.AppendText(str[1]); 
     } // Else?? Well, do something else.. 
    } 

Et l'appel:

 private void button1_Click(object sender, EventArgs e) 
    { 
     AddText(DateTime.Now.ToString() + " - Mike; Did something"); 

    } 
9

Une alternative est d'utiliser le format rtf:

richTextBox1.Rtf = @"{\rtf1\pc \b 02/11/2010 - 05:15 PM - Adam:\b0 Another test notes added on 2nd November \par \b 02/11/2010 - 05:14 PM - Z_kas:\b0 Test Notes. STAGE CHANGED TO: N Enq - Send Quote\par \b 02/11/2010 - 05:12 PM - user32:\b0 Another test notes added on 2nd November"; 

voir msdn: http://msdn.microsoft.com/en-us/library/aa287595%28v=vs.71%29.aspx http://msdn.microsoft.com/en-us/library/aa140301.aspx#rtfspec_8

"\ b" commence la une section en gras et "\ b0" le termine. "\ Par" commence le nouveau paragraphe/ligne (le plus proche de \ n).

Questions connexes