2015-02-19 4 views
1

Добрый день!Как изменить цвет текста в RichTextBox

Я пытаюсь изменить часть текста на красный цвет.

Итак, я пытаюсь использовать TextBox, но он не работает. Итак, я читал, что RichTextBox может это сделать: i use this question

Но я не знаю, как добавить цветной текст?

TextRange rangeOfText1 = new TextRange(tbScriptCode.Document.ContentEnd, tbScriptCode.Document.ContentEnd); 
rangeOfText1.Text = "Text1 "; 
rangeOfText1.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue); 
          rangeOfText1.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold); 

Хорошо, я получаю TextRange, но как добавить его в RichTextBox?

Можете ли вы рассказать мне, как сделать часть текста красным? Спасибо!

+0

возможно дубликат [Как выбрать текст из RichTextBox, а затем его цвет?] (Http://stackoverflow.com/questions/3707120/how-to-select-text-from-the-richtextbox-and-then-color-it) [случайно вставлен в неправильную ссылку! извините!] –

+0

Вы хотите отредактировать текст или просто отобразить его? – toadflakz

+0

Я хочу сделать простую ошибку компиляции cheching.So, если я нашел ошибку компиляции - я хочу, чтобы цветной текст ошибки был красным. – user2545071

ответ

2

Начиная с вашим примером:

TextRange rangeOfText2 = new TextRange(tbScriptCode.Document.ContentEnd, 
    tbScriptCode.Document.ContentEnd); 

rangeOfText2.Text = "RED !"; 

rangeOfText2.ApplyPropertyValue(TextElement.ForegroundProperty,Brushes.Red); 
rangeOfText2.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold); 

работает для меня.

Хорошо, я получаю TextRange, но как добавить его в RichTextBox?

Он уже был добавлен с

new TextRange(tbScriptCode.Document.ContentEnd, tbScriptCode.Document.ContentEnd); 

Что вы можете сделать (я это сам в последнее время):

var fd = new FlowDocument(); 

Paragraph paragraph = new Paragraph(); 

paragraph.Inlines.Add(new Run("normal text and this is in ")); 
paragraph.Inlines.Add(new Run("red") { Foreground = Brushes.Red }); 
paragraph.Inlines.Add(new Run(" and this is blue.") { Foreground = Brushes.Blue }); 

fd.Blocks.Add(paragraph); 

tbScriptCode.Document = fd; 
+0

может быть новым TextRange (tbScriptCode.Document.ContentStart, tbScriptCode.Document.ContentEnd); ? – user2545071

+1

Если вы используете TextRange (tbScriptCode.Document.ContentStart, tbScriptCode.Document.ContentEnd); весь существующий текст будет перезаписан. Поиграйте со всем этим. Я сделал это сам несколько недель назад, где искал быстрый способ отображения текста с определенными линиями, отображаемыми в цвете. Я закончил решение FlowDocument. Там могут быть лучшие решения, и тот, с которым вы столкнулись, тоже кажется интересным. –

Смежные вопросы