0

0

C#怎么实现字符串的高亮显示_C#如何修改RichTextBox部分文字【示例】

冰火之心

冰火之心

发布时间:2026-03-15 15:42:14

|

186人浏览过

|

来源于php中文网

原创

RichTextBox高亮文字需先调用Focus()并设HideSelection=false,再用SelectionStart/SelectionLength选中、SelectionColor/BackColor着色;ReadOnly或Enabled为false会导致失效;多关键词高亮须倒序处理索引以防错位。

RichTextBox 里怎么高亮一段文字

直接操作 selectionstartselectionlength,再设 selectioncolorselectionbackcolor。关键不是“加高亮”,而是“先选中、再染色”——没选中就设颜色,完全无效。

常见错误是:调用 Select() 前没把焦点给控件,或没把 HideSelection 设为 false(否则选中态在失去焦点时消失,看着像没高亮)。

  • richTextBox1.Focus() 必须调用,否则 Select() 可能静默失败
  • 搜索文本要用 richTextBox1.Text.IndexOf("xxx"),别用 richTextBox1.Find("xxx")(那是 WinForms 旧 API,只支持 RTF 搜索且行为不可靠)
  • 如果文本含换行符,IndexOf 返回的索引仍是全文本线性位置,无需额外换算
  • 高亮前建议先清除原有选择:richTextBox1.SelectionLength = 0

连续高亮多个关键词时怎么避免错位

每次调用 Select() 都会改变光标位置和当前选区,连续高亮必须“从后往前”处理匹配位置,否则前面的高亮会把后续文本索引整体推移。

比如原文 “abc abc abc”,搜 “abc” 得到索引 [0,4,8],若从前往后高亮:第一次选 [0,3] → 插入格式(不改文本)→ 第二次仍按 [4,7] 选,但此时因前面格式信息(RTF 控制字)已写入,实际字符偏移可能变成 [6,9],导致错位。

  • Regex.Matches(text, pattern) 先拿到所有 Match 对象,再按 m.Index 降序排列
  • 高亮循环中,每次都要重新设置 richTextBox1.SelectionStartrichTextBox1.SelectionLength,不能复用上一次的起始值
  • 不要在高亮过程中修改 richTextBox1.Text(比如加 HTML 标签),RichTextBox 是 RTF 渲染,纯文本赋值会清空所有格式

为什么设了 SelectionColor 却看不到颜色

最常见原因是 richTextBox1.ReadOnlytrue —— 此时任何选区样式设置都被忽略,连光标都不显示。另一个隐蔽原因是 richTextBox1.BackColorSelectionBackColor 碰巧相近,看起来像没变。

Winston AI
Winston AI

强大的AI内容检测解决方案

下载
  • 检查 richTextBox1.ReadOnly == false,这是硬性前提
  • 确认 richTextBox1.Enabled == true,禁用状态也不响应样式变更
  • 避免用太浅的 SelectionBackColor(如 Color.White)叠加在白色背景上
  • 如果之前手动写过 RTF 字符串(richTextBox1.Rtf = "..."),要确保 RTF 片段里没覆盖掉颜色表({\colortbl;})或用了不兼容的控制字

C# 里替换文本后如何保留原高亮格式

不能直接改 Text 属性。一旦赋值,所有 RTF 格式(包括颜色、字体、缩进)全部丢失。想“替换并保留格式”,本质是做 RTF 层面的查找替换,而非字符串层面。

简单场景可用 richTextBox1.Find() + richTextBox1.SelectedRtf 提取原格式,但更稳的方式是:用正则定位,用 richTextBox1.Select() 选中旧文本,再用 richTextBox1.SelectedRtf = newRtf 写入带格式的新内容。

  • richTextBox1.SelectedRtf 读出来的是完整 RTF 片段(含 {\fonttbl...} 等),替换时注意保持结构合法
  • 如果只是改文字不改样式,可先记下 SelectionColorSelectionFontSelect() 后用 richTextBox1.SelectedText = "new",再立刻重设样式
  • 频繁替换推荐用 richTextBox1.Undo() 配合批量操作,避免用户感知卡顿

真正麻烦的从来不是“怎么高亮”,而是“高亮之后怎么不让它突然失效”——焦点切换、文本更新、RTF 解析差异,任何一个环节松动,颜色就没了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

761

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1570

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

651

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1229

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1205

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

193

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

131

2025.08.07

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

69

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 11.4万人学习

C 教程
C 教程

共75课时 | 5.5万人学习

C++教程
C++教程

共115课时 | 22万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号