格式化WPF RichTextBox中的特定文本行

时间:2011-08-30 22:11:44

标签: wpf format richtextbox bold

在带有以下文本的WPF .NET 4.0 RichTextBox中:

Apple

奶酪

我将如何使用C#编程(不使用XAML标记),以字母“C”开头的所有行都加粗?

更一般地说,如何从RichTextBox获取对给定文本行的引用,然后对其应用一些格式?

1 个答案:

答案 0 :(得分:2)

这比我想象的要复杂,但我认为下面的代码可以做到:

        foreach (var paragraph in richTextBox1.Document.Blocks)
        {
            var text = new TextRange(paragraph.ContentStart,
                           paragraph.ContentEnd).Text;

            paragraph.FontWeight = text.StartsWith("C") ?
                           FontWeights.Bold : FontWeights.Normal;
        }

基本上,RichTextBox将其内容保存在FlowDocument(通过Document属性访问)中,而FlowDocument又包含一个包含每个Paragraph的Blocks集合。实际上,Blocks集合中的每个项目都可以是从抽象类Block派生的任何内容......但我假设你只是将简单文本添加到RichTextBox然后它们总是只是Paragraphs。有关更好的解释,请参阅here

最棘手的部分是要从段落中获取文本,你需要使用TextRange类...但好消息是,一旦我们有了文本,Paragraph就会有简单的属性用于设置字体粗细等!