【问题标题】:How to get Rich Text Box Character Color?如何获得富文本框字符颜色?
【发布时间】:2011-10-12 22:01:39
【问题描述】:
我有一个富文本框应用程序,我必须执行两个操作。
1) 我只需要突出显示富文本框文本的部分字符。
示例:假设我有 100 个没有空格的字符。在此我需要验证用户不能仅突出显示某些允许的字符。
意味着我有 100 个字符,管理员只允许 20%,然后用户只能突出显示 20%。字符基色为黑色,表示用户不能更改任何 80 个字符的颜色。用户只能更改 20 个任意颜色的字符。
2) 假设用户突出显示任何文本。然后用户用户可以将任何文本标记为注释。
我已经为此做了很多搜索,但我没有得到任何解决方案,请帮助我找到解决方案。
【问题讨论】:
标签:
c#
windows
desktop-application
rich-text-editor
【解决方案1】:
我假设这是您正在查询的 WPF RichTextBox,基于“桌面应用程序”标签。所以在 WPF RichTextBox 中有一个 TextRange 对象,上面有一个ApplyPropertyValue。
因此,您需要获得一个跨越所需字符的 TextRange,然后将属性 TextElement.Foreground 应用于您选择的画笔。
例如,如果您想将字符 20-40 突出显示为红色,您可以执行以下操作:
var range = new TextRange(
rtb.Document.ContentStart.GetPositionAtOffset(20),
rtb.Document.ContentStart.GetPositionAtOffset(40));
range.ApplyProperty(TextElement.ForegroundProperty, Brushes.Red);
值得注意的是,当您应用这样的属性时,在内部文本将被分解为多个运行,并且通过偏移获取位置将不会以相同的方式工作。在这种情况下,您应该获取整个文档的 TextRange 并调用 ClearAllProperties 或使用 TextPointer 并迭代运行。