这通过将透明颜色绘制为当前行上的背景颜色来突出显示每条线的整个宽度.线路切换时,将恢复原始背景颜色.
所以,我们想要做的是:
mLastHighlight每个应用行的索引和矩形但是,删除突出显示时,文本会被涂上.应用突出显示时不会发生这种情况.
一种解决方案是在重置背景颜色后重新重新显示控件上的文本.虽然文本格式,选择颜色,字体样式,超链接等将是繁琐的过滤.不是很优雅.
这导致更简单的解决方案,刷新控制.虽然那会导致大量的闪烁.也不接受.
有优雅的解决方案吗?我完全不知道为什么会这样.
编辑:编辑以反映Code Gray的回应.
using System;
public class RTBHL : RichTextBox
{
private LastHighlight mLastHighlight = new LastHighlight(0, Rectangle.Empty);
private class LastHighlight
{
public int mCharIndex;
public Rectangle mRectangle;
public LastHighlight(int index, Rectangle r)
{
mCharIndex = index;
mRectangle = r;
}
}
public void PaintLineHighlight()
{
using (Graphics g = this.CreateGraphics)
{
// highlight color
Color c = Color.Beige;
// current pen color
Pen cp = new Pen(Color.Beige); …Run Code Online (Sandbox Code Playgroud)