我有一个富文本框应用程序,我必须执行两个操作。
1)我必须只突出显示富文本框文本的一部分字符。
示例:假设我有100个没有空格的字符。在此我需要验证用户不能只突出显示一些允许的字符。
表示我有100个字符,管理员仅允许20%,然后用户只能突出显示20%。字符基色为黑色,表示用户无法更改任何80个字符的颜色。用户只能更改任何颜色的20个字符。
2)假设用户突出显示任何文本。然后,用户用户可以使用突出显示为注释的任何文本进行标记。
我已经做了很多搜索,但我没有得到任何解决方案,请帮我找到解决方案。
答案 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并遍历运行。