WPF RichTextBox 问题

E次奥 2018-09-17 06:38:58
注意是WPF的控件

我准备在RichTextBox中进行实现关键字高亮的功能,发现了一个问题;

由于WPF中RichTextBox是由很多Run组成的,这就导致关键字有可能出现在两个Run相连的位置;

比如:


Paragraph p = new Paragraph();
richTextBox.Document.Blocks.Add(p);
p.Inlines.Add(new Run("遥远的东方有一条龙"));
p.Inlines.Add(new Run("四是四十是十四"));
p.Inlines.Add(new Run("十是十四"));


这段代码,我用 “四十”作为关键字进行搜索,第二个Run的最后一个四和第三个Run的第一个十由于在视觉上是一起的,所以需要高亮;

如何实现这种高亮呢 ???
...全文
720 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
OrdinaryCoder 2018-09-21
  • 打赏
  • 举报
回复
应该可以将所有的run拼成一个 再按照关键字进行搜索 之后高亮把
lindexi_gd 2018-09-19
  • 打赏
  • 举报
回复
引用 6 楼 porenasckx 的回复:
[quote=引用 5 楼 lindexi_gd 的回复:] 这时需要做拆分啦
具体怎么弄?[/quote] 将原来的 Run 拆出来,然后再做合并或拆分
h56233577 2018-09-18
  • 打赏
  • 举报
回复
var run = new Run("xxx");
run.Foreground = Brushes.Red;
E次奥 2018-09-18
  • 打赏
  • 举报
回复
引用 3 楼 D56233577 的回复:
[quote=引用 2 楼 porenasckx 的回复:] [quote=引用 1 楼 h56233577 的回复:] var run = new Run("xxx"); run.Foreground = Brushes.Red;
你没有看清问题啊!!! 我是按照上边的方式进行输入后,然后用“四十”进行搜索,所有“四十”高亮,其他文字不高亮; [/quote] 首先判断哪些 Run 中的字符需要高亮,然后提取出来单独高亮,并不难吧。[/quote] 如果两个Run相连的字符组成的词语和Keyword一样的时候怎么高亮? 比如帖子里边第二个Run最后一个 “四”和第三个Run第一个"十" 组成了四十,我想让所有的“四十”高亮,怎么弄?
D56233577 2018-09-18
  • 打赏
  • 举报
回复
引用 2 楼 porenasckx 的回复:
[quote=引用 1 楼 h56233577 的回复:] var run = new Run("xxx"); run.Foreground = Brushes.Red;
你没有看清问题啊!!! 我是按照上边的方式进行输入后,然后用“四十”进行搜索,所有“四十”高亮,其他文字不高亮; [/quote] 首先判断哪些 Run 中的字符需要高亮,然后提取出来单独高亮,并不难吧。
E次奥 2018-09-18
  • 打赏
  • 举报
回复
引用 1 楼 h56233577 的回复:
var run = new Run("xxx"); run.Foreground = Brushes.Red;
你没有看清问题啊!!! 我是按照上边的方式进行输入后,然后用“四十”进行搜索,所有“四十”高亮,其他文字不高亮;
E次奥 2018-09-18
  • 打赏
  • 举报
回复
引用 5 楼 lindexi_gd 的回复:
这时需要做拆分啦
具体怎么弄?
lindexi_gd 2018-09-18
  • 打赏
  • 举报
回复
这时需要做拆分啦

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧