【发布时间】:2011-08-30 22:11:43
【问题描述】:
在带有以下文本的 WPF .NET 4.0 RichTextBox 中:
苹果
奶酪
橙色
梨
鸡
我如何以编程方式使用 C#(而不是 XAML 标记)将所有以字符“C”开头的行加粗?
更一般地说,如何从 RichTextBox 获取对给定文本行的引用,然后对其应用一些格式?
【问题讨论】:
标签: wpf format richtextbox bold
在带有以下文本的 WPF .NET 4.0 RichTextBox 中:
苹果
奶酪
橙色
梨
鸡
我如何以编程方式使用 C#(而不是 XAML 标记)将所有以字符“C”开头的行加粗?
更一般地说,如何从 RichTextBox 获取对给定文本行的引用,然后对其应用一些格式?
【问题讨论】:
标签: wpf format richtextbox bold
这比我预期的要棘手,但我认为下面的代码可以做到:
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 类...但好消息是,一旦我们有了文本,段落上就有简单的属性用于设置字体粗细等!
【讨论】: