RichTextBox 컨트롤에 텍스트를 입력할 때 다음과 같은 작업을 수행할 수 있습니다. 특정 키워드나 바람직하지 않은 단어를 실시간으로 강조하고 싶습니다. 이를 달성하기 위해 일반적으로 키를 누를 때마다 기능이 호출되는데, 이로 인해 단어와 커서가 과도하게 깜박일 수 있습니다.
이러한 맥락에서 다시 그리기를 비활성화하는 것은 시각적 방해를 최소화하기 위해 제안된 솔루션입니다. 이를 수행하는 한 가지 방법은 "WndProc" 함수를 재정의하고 다시 그리기 메시지를 가로채는 것입니다. 그러나 사용 중인 함수에 RichTextBox 매개변수 전달이 필요한 경우 이 접근 방식이 어려워집니다.
대체 솔루션은 "BeginUpdate" 및 "EndUpdate" 메서드를 활용하는 것입니다. 이를 통해 그리기 및 트리거를 억제할 수 있습니다. 텍스트 수정이 완료되면 완료됩니다. 불행하게도 이러한 메서드는 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; }
컴파일한 후 도구 상자에서 MyRichTextBox 컨트롤을 양식에 놓습니다. 또는 RichTextBox 텍스트 업데이트 전후에 WM_SETREDRAW 메시지를 사용하여 SendMessage 함수를 직접 호출할 수 있습니다.
위 내용은 실시간 입력 중에 RichTextBox에서 텍스트를 강조 표시할 때 깜박임을 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!