How to use multi color in richtextbox

72,119

Solution 1

System.Windows.Forms.RichTextBox has got a property of type Color of the name SelectionColor which gets or sets the text color of the current selection or insertion point. You can use this property to mark specific fields in your RichTextBox with the colors you specify.

Example

RichTextBox _RichTextBox = new RichTextBox(); //Initialize a new RichTextBox of name _RichTextBox
_RichTextBox.Select(0, 8); //Select text within 0 and 8
_RichTextBox.SelectionColor = Color.Red; //Set the selected text color to Red
_RichTextBox.Select(8, 16); //Select text within 8 and 16
_RichTextBox.SelectionColor = Color.Green; //Set the selected text color to Green
_RichTextBox.Select(0,0); //Select text within 0 and 0

Notice that: You may avoid calculations by using RichTextBox.Find(string str) which can be added through Object Browser if you would like to highlight the text within the Lines in RichTextBox giving it's value

Example

RichTextBox _RichTextBox = new RichTextBox(); //Initialize a new RichTextBox of name _RichTextBox
_RichTextBox.Find("Account 12345, deposit 100$, balance 200$"); //Find the text provided
_RichTextBox.SelectionColor = Color.Green; //Set the selected text color to Green

Thanks,
I hope you find this helpful :)

Solution 2

I found this extension method that gives you the ability to change the color of the string as well as inserting a newline value:

    public static void AppendText(this RichTextBox box, string text, Color color, bool AddNewLine = false)
    {
        if (AddNewLine)
        {
            text += Environment.NewLine;
        }

        box.SelectionStart = box.TextLength;
        box.SelectionLength = 0;

        box.SelectionColor = color;
        box.AppendText(text);
        box.SelectionColor = box.ForeColor;
    }
Share:
72,119
Billie
Author by

Billie

Updated on November 27, 2020

Comments

  • Billie
    Billie over 3 years

    I using C# windows forms and I have richtextbox and I want to color some text in red, some in green and some in black.

    How to do so? Image attached.

    enter image description here

  • 56ka
    56ka about 10 years
    This is a working solution but there is an easyer way to proceed : stackoverflow.com/a/10587765/1529139
  • tedebus
    tedebus about 7 years
    I think you can also add box.SuspendLayout() at the beginning of the method and box.ResumeLayout() at the end.