【发布时间】:2023-03-26 04:56:01
【问题描述】:
我正在创建一个函数,该函数采用 RichTextBox 并可以访问关键字和“坏词”列表。我需要在用户输入时突出显示我在 RichTextBox 中找到的所有关键字和坏词,这意味着每次释放编辑键时都会调用该函数。
我已经编写了这个函数,但是框中的文字和光标闪烁太多,不舒适。
我发现了一个解决方案——在我编辑和格式化其文本时禁用 RichTextBox 重新绘制自身的能力。但是,我知道这样做的唯一方法是重写“WndProc”函数并拦截(我将要收集的是)重绘消息,如下所示:
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == 0x00f) {
if (paint)
base.WndProc(ref m);
else
m.Result = IntPtr.Zero;
}
else
base.WndProc(ref m);
}
在我开始突出显示之前布尔值“paint”设置为 false,完成后设置为 true。但正如我所说,我制作的函数必须包含一个 RichTextBox;我不能使用子类。
那么,有没有办法从外部禁用 RichTextBox 的自动重绘?
【问题讨论】:
标签: c# graphics richtextbox syntax-highlighting