TextboxLocate文本定位与高亮技巧
C#的 TextBox 控件你肯定用得不少吧?尤其是做 WinForm 应用时,用户输入的地方八成都是它。TextboxLocate就是个专门帮你“定位+高亮”某一行文本的小技巧,用起来还挺顺的。
TextBox 开成多行模式后,用Multiline=true
就能支持多行输入,再加上垂直滚动条,用户体验基本到位。那问题来了——怎么自动滚到第 n 行,还能把这一行用颜色高亮出来?
其实原理不复杂。先用Text.Split('\n')
把每一行拆出来,数好你要定位的第几行,再把前面几行的长度加起来,得出目标字符的索引位置。
一招SelectionStart + ScrollToCaret()
搞定定位,再设定SelectionLength
和SelectionBackColor
就能让这一行黄灿灿地冒出来,看着醒目。
核心代码也不长:
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;
}
不过得提醒一下:行号超了会崩,颜色高亮也跟你原本的样式冲突。可以加点异常和样式复原的逻辑,写起来不麻烦,但能让功能更稳更贴心。
如果你在做日志查看器、代码高亮或文本导航工具,这个技巧蛮实用的。想深入的,你也可以看看下面几个相关文章,我都帮你挑好了。
下载地址
用户评论