【问题标题】:Formatting specifc lines of text in WPF RichTextBox格式化 WPF RichTextBox 中的特定文本行
【发布时间】:2011-08-30 22:11:43
【问题描述】:

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

苹果

奶酪

橙色

我如何以编程方式使用 C#(而不是 XAML 标记)将所有以字符“C”开头的行加粗?

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

【问题讨论】:

    标签: wpf format richtextbox bold


    【解决方案1】:

    这比我预期的要棘手,但我认为下面的代码可以做到:

            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 又具有包含每个段落的 Block 集合。实际上,Blocks 集合中的每个项目都可以是从抽象类 Block 派生的任何内容……但我假设如果您只向 RichTextBox 添加简单文本,那么它们将始终只是段落。请参阅here 以获得更好的解释!

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

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      相关资源
      最近更新 更多