1. 首页
  2. 编程语言
  3. C#
  4. TextboxLocate文本定位与高亮技巧

TextboxLocate文本定位与高亮技巧

上传者: 2025-05-27 13:45:33上传 RAR文件 42.03KB 热度 2次

C#的 TextBox 控件你肯定用得不少吧?尤其是做 WinForm 应用时,用户输入的地方八成都是它。TextboxLocate就是个专门帮你“定位+高亮”某一行文本的小技巧,用起来还挺顺的。

TextBox 开成多行模式后,用Multiline=true就能支持多行输入,再加上垂直滚动条,用户体验基本到位。那问题来了——怎么自动滚到第 n 行,还能把这一行用颜色高亮出来?

其实原理不复杂。先用Text.Split('\n')把每一行拆出来,数好你要定位的第几行,再把前面几行的长度加起来,得出目标字符的索引位置。

一招SelectionStart + ScrollToCaret()搞定定位,再设定SelectionLengthSelectionBackColor就能让这一行黄灿灿地冒出来,看着醒目。

核心代码也不长:

private void LocateAndHighlight(int lineNumber) {
  int targetIndex = 0;
  string[] lines = textBox1.Text.Split('\n');
  for (int i = 0; i < lineNumber; i++) {
    targetIndex += lines[i].Length + 1;
  }
  textBox1.SelectionStart = targetIndex;
  textBox1.ScrollToCaret();
  int highlightEnd = targetIndex + lines[lineNumber - 1].Length;
  textBox1.SelectionLength = highlightEnd - targetIndex;
  textBox1.SelectionBackColor = Color.Yellow;
}

不过得提醒一下:行号超了会崩,颜色高亮也跟你原本的样式冲突。可以加点异常和样式复原的逻辑,写起来不麻烦,但能让功能更稳更贴心。

如果你在做日志查看器代码高亮文本导航工具,这个技巧蛮实用的。想深入的,你也可以看看下面几个相关文章,我都帮你挑好了。

下载地址
用户评论