Plusieurs couleurs et polices dans une RichTextBox

cs_lionel4 Messages postés 129 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 26 septembre 2008 - 4 mars 2006 à 12:47
cs_lionel4 Messages postés 129 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 26 septembre 2008 - 4 mars 2006 à 12:56
Salut à tous,
J'essaie de faire une application avec une sorte de "console". Cette console est tout simplement une RichTextBox dans laquelle j'ajoute au fur et à mesure un texte (un par ligne). Cependant pour que ce soit plus sympa visuellment, je souhaite affecter une mise en forme particulière selon le texte ajouté. Exemple concret : j'ajoute une commande : elle sera affiché en gras, un commentaire, en vert et un avertissement en rouge souligné.
Je joue donc sur les propriétés RTB.SelectionX qui fonctionne bien mais le seul problème c'est que quand j'ajoute une ligne et que je lui applique la mise en forme qui lui est dédié, toute la mise en forme des lignes précédantes est perdue (elle reprend la mise en forme classique, celle de la propriété Font de la RichTexteBox).
Donc j'aimerais savoir comment ajouter du texte à ma RichtextBox, lui ajouter une mise en forme particulière (Couleur + Souligné/Gras/Italique) sans perdre la précédente.

Voici ma procédure pour ajouter du texte à la RichTextBox :
La RichTextBox s'appelle TxtConsole, Texte est le texte à ajouter, MyFont est une énumération personnelle que j'utilise pour me simplifier la vie et qui représente les différentes mises en forme possible.


Public Sub AddTextToConsole(ByVal Texte As String, ByVal MyFont As MyFont)
'Ajoute le texte (sur une nouvelle ligne)
Me.TxtConsole.Text &= vbCrLf
Me.TxtConsole.Text &= Texte
'Sélectionne le texte ajoutéMe.TxtConsole.SelectionStart (Me.TxtConsole.TextLength - Texte.Length)Me.TxtConsole.SelectionLength Texte.Length
'Applique la police adaptée
Dim currentfont As System.Drawing.Font = Me.TxtConsole.SelectionFont
Dim newfontStyle As System.Drawing.FontStyle
'Applique la mise en forme
newfontStyle = Console.GetFont(MyFont) 'La fonction GetFont renvoie un élément de type FontStyle (FontStyle.Bold par exemple)Me.TxtConsole.SelectionFont New Font(currentfont.FontFamily, currentfont.Size, newfontStyle)Me.TxtConsole.SelectionColor Console.GetColorFont(MyFont) 'Fonction GetColorFont qui renvoie une couleur (System.Drawing.Color.Aqua par exemple)
'Met le curseur à la fin et enlève la sélection
Me.TxtConsole.SelectionStart = Me.TxtConsole.TextLength
Me.TxtConsole.SelectionLength = 0
'Refraichie tout ce qui doit être
Me.TxtConsole.Update()
Me.TxtConsole.Refresh()
Application.DoEvents()
End Sub

Si quelqu'un peut m'aider, merci d'avance

1 réponse

cs_lionel4 Messages postés 129 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 26 septembre 2008
4 mars 2006 à 12:56
Note : je suis en VB.NET
0
Rejoignez-nous