2011-03-26 6 views
25

TextBox 또는 RichTextBox에 넣을 텍스트의 일부분에 대한 색 및 글꼴을 변경하는 방법이 있습니까? 나는 C# WPF를 사용하고있다. 예를 들어, 예를 들어WPF에서 텍스트의 일부 색상 및 글꼴 변경 C#

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

가변 워드 텍스트 1 텍스트 2에서 다른 색상과 폰트를한다. 그것은 가능하고 어떻게 이것을 할 수 있습니까?

답변

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

의 문서 속성을 사용하여, "rangeOfWord"와 "rangeOfText2는"완료, 어떻게 그들 CONCAT? – xavendano

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 개체 "rangeOfText1"후

관련 문제