在带有以下文本的 WPF .NET 4.0 RichTextBox 中:
苹果
奶酪
橙子
梨
鸡
我如何以编程方式使用 C#(而不是 XAML 标记)将所有以字符“C”开头的行加粗?
更一般地说,如何从 RichTextBox 中获取对给定文本行的引用,然后对其应用一些格式?
在带有以下文本的 WPF .NET 4.0 RichTextBox 中:
苹果
奶酪
橙子
梨
鸡
我如何以编程方式使用 C#(而不是 XAML 标记)将所有以字符“C”开头的行加粗?
更一般地说,如何从 RichTextBox 中获取对给定文本行的引用,然后对其应用一些格式?
嗯,这比我预期的要棘手,但我认为下面的代码可以做到:
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 添加简单文本,那么它们将始终只是段落。请参阅此处以获得更好的解释!
最棘手的部分是,要将文本从段落中取出,您需要使用TextRange类……但好消息是,一旦我们有了文本,段落就具有用于设置字体粗细等的简单属性!