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 중국어 웹사이트의 기타 관련 기사를 참조하세요!