WPF RichTextBox добавление цветного текста - PullRequest
20 голосов
/ 01 апреля 2011

Я использую функцию RichTextBox.AppendText, чтобы добавить строку в мой RichTextBox.Я хотел бы установить это с определенным цветом.Как я могу это сделать?

Ответы [ 3 ]

36 голосов
/ 01 апреля 2011

Просто попробуйте это:

TextRange tr = new TextRange(rtb.Document.ContentEnd,­ rtb.Document.ContentEnd);
tr.Text = "textToColorize";
tr.ApplyPropertyValue(TextElement.­ForegroundProperty, Brushes.Red);
14 голосов
/ 01 мая 2014

Если вы хотите, вы также можете сделать это методом расширения.

public static void AppendText(this RichTextBox box, string text, string color)
{
    BrushConverter bc = new BrushConverter();
    TextRange tr = new TextRange(box.Document.ContentEnd, box.Document.ContentEnd);
    tr.Text = text;
    try 
    { 
        tr.ApplyPropertyValue(TextElement.ForegroundProperty, 
            bc.ConvertFromString(color)); 
    }
    catch (FormatException) { }
}

Это сделает так, что вы можете просто сделать

myRichTextBox.AppendText("My text", "CornflowerBlue");

или в шестнадцатеричном виде, таком как

myRichTextBox.AppendText("My text", "0xffffff");

Если введенная вами цветовая строка недопустима, она просто печатает ее в цвете по умолчанию (черный).Надеюсь, это поможет!

0 голосов
/ 02 августа 2018

вышеуказанный однострочный ответ: -

  myRichTextBox.AppendText("items", "CornflowerBlue")

не работает. Правильный способ написания (я использую VS 2017): -

    Dim text1 As New TextRange(myRichTextBox.Document.ContentStart, myRichTextBox.Document.ContentEnd)
  myRichTextBox.AppendText("items")
  text1.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.CornflowerBlue) 
...