C# 如何获得富文本框字符颜色?
我有一个富文本框应用程序,我必须用它执行两个操作 1) 我只需要突出显示富文本框文本中某些字符的百分比 示例:假设我有100个字符,没有空格。在此我需要验证,用户不能只突出显示一些允许的字符 意味着我有100个字符,管理员只允许20%,然后用户只能突出显示20%。字符基色为黑色,表示用户不能更改任何80个字符的颜色。用户只能更改任何颜色的20个字符 2) 假设用户突出显示了任何文本。然后用户可以将任何文本标记为突出显示的注释C# 如何获得富文本框字符颜色?,c#,windows,desktop-application,rich-text-editor,C#,Windows,Desktop Application,Rich Text Editor,我有一个富文本框应用程序,我必须用它执行两个操作 1) 我只需要突出显示富文本框文本中某些字符的百分比 示例:假设我有100个字符,没有空格。在此我需要验证,用户不能只突出显示一些允许的字符 意味着我有100个字符,管理员只允许20%,然后用户只能突出显示20%。字符基色为黑色,表示用户不能更改任何80个字符的颜色。用户只能更改任何颜色的20个字符 2) 假设用户突出显示了任何文本。然后用户可以将任何文本标记为突出显示的注释 我已经为此做了很多搜索,但没有找到任何解决方案。请帮助我找到解决方案。
我已经为此做了很多搜索,但没有找到任何解决方案。请帮助我找到解决方案。好吧,我假设这是您查询的WPF RichTextBox,基于“桌面应用程序”标记。所以在WPF RichTextBox中有一个TextRange对象,上面有一个 因此,您需要获取一个包含所需字符的TextRange,然后将属性TextElement.前台应用于您选择的笔刷 例如,如果要将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并迭代运行。这是一个简单的窗口应用程序。那么您是说它的windows窗体吗?