在 RichTextBox 中禁用实时语法突出显示的重绘
您需要在用户键入时突出显示 RichTextBox 中的关键字和不良单词,但由于不断重新绘制而导致的过度闪烁是一个令人担忧的问题。但是,重写“WndProc”函数并拦截重绘消息的标准方法需要子类化,这是不可行的。
幸运的是,您可以通过自己扩展 RichTextBox 类的功能来解决此问题。操作方法如下:
创建自定义 RichTextBox 类:
using System; using System.Windows.Forms; using System.Runtime.InteropServices; class MyRichTextBox : RichTextBox { public void BeginUpdate() { SendMessage(this.Handle, WM_SETREDRAW, (IntPtr)0, IntPtr.Zero); } public void EndUpdate() { SendMessage(this.Handle, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero); this.Invalidate(); } [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); private const int WM_SETREDRAW = 0x0b; }
使用自定义控件:
禁用重绘:
myRichTextBox1.BeginUpdate();
启用重画:
myRichTextBox1.EndUpdate();
通过使用自定义 RichTextBox 控件,您现在可以实时突出显示关键字和不良单词,而不会出现自动重画导致的分散注意力的闪烁。
以上是如何在 RichTextBox 中禁用重画以实现实时语法突出显示?的详细内容。更多信息请关注PHP中文网其他相关文章!