Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得富文本框字符颜色?_C#_Windows_Desktop Application_Rich Text Editor - Fatal编程技术网

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

C# 如何获得富文本框字符颜色?,c#,windows,desktop-application,rich-text-editor,C#,Windows,Desktop Application,Rich Text Editor,我有一个富文本框应用程序,我必须用它执行两个操作 1) 我只需要突出显示富文本框文本中某些字符的百分比 示例:假设我有100个字符,没有空格。在此我需要验证,用户不能只突出显示一些允许的字符 意味着我有100个字符,管理员只允许20%,然后用户只能突出显示20%。字符基色为黑色,表示用户不能更改任何80个字符的颜色。用户只能更改任何颜色的20个字符 2) 假设用户突出显示了任何文本。然后用户可以将任何文本标记为突出显示的注释 我已经为此做了很多搜索,但没有找到任何解决方案。请帮助我找到解决方案。

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

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窗体吗?