如何获得富文本框字符颜色?

时间:2011-07-25 20:38:02

标签: c# windows desktop-application rich-text-editor

我有一个富文本框应用程序,我必须执行两个操作。

1)我必须只突出显示富文本框文本的一部分字符。

示例:假设我有100个没有空格的字符。在此我需要验证用户不能只突出显示一些允许的字符。

表示我有100个字符,管理员仅允许20%,然后用户只能突出显示20%。字符基色为黑色,表示用户无法更改任何80个字符的颜色。用户只能更改任何颜色的20个字符。

2)假设用户突出显示任何文本。然后,用户用户可以使用突出显示为注释的任何文本进行标记。

我已经做了很多搜索,但我没有得到任何解决方案,请帮我找到解决方案。

1 个答案:

答案 0 :(得分:0)

嗯,我假设这是一个基于'desktop-application'标签的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并遍历运行。