2011-03-26 53 views
25

有沒有辦法改變我想放在TextBox或RichTextBox上的某些文本部分的顏色和字體。我正在使用C#WPF。更改WPF C中某些文本部分的顏色和字體C#

例如

richTextBox.AppendText("Text1 " + word + " Text2 "); 

例如可變字是從文本1和文本其他顏色和字體。這是可能的和如何做到這一點?

回答

39

如果你只想做一些快速的着色,使用RTB內容爲範圍的結束和格式應用於它也許是最簡單的解決方案,例如

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

    TextRange rangeOfWord = new TextRange(richTextBox.Document.ContentEnd, richTextBox.Document.ContentEnd); 
    rangeOfWord.Text = "word "; 
    rangeOfWord.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red); 
    rangeOfWord.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Regular); 

    TextRange rangeOfText2 = new TextRange(richTextBox.Document.ContentEnd, richTextBox.Document.ContentEnd); 
    rangeOfText2.Text = "Text2 "; 
    rangeOfText2.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue); 
    rangeOfText2.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold); 

如果你正在尋找一個更先進的解決方案,我建議閱讀有關FlowDocument的MSDN頁面,因爲這讓你在格式化你的文字有很大的靈活性。

+0

對象 「rangeOfText1」 後的文檔屬性 「rangeOfWord」 和 「rangeOfText2」 是完整的,怎麼CONCAT呢? – xavendano 2013-04-16 16:49:45

14

你可以試試這個。

public TestWindow() 
{ 
    InitializeComponent(); 

    this.paragraph = new Paragraph(); 
    rich1.Document = new FlowDocument(paragraph); 

    var from = "user1"; 
    var text = "chat message goes here"; 
    paragraph.Inlines.Add(new Bold(new Run(from + ": ")) 
    { 
     Foreground = Brushes.Red 
    }); 
    paragraph.Inlines.Add(text); 
    paragraph.Inlines.Add(new LineBreak()); 
    this.DataContext = this; 
} 
private Paragraph paragraph; 

所以使用的RichTextBox

相關問題