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 中国語 Web サイトの他の関連記事を参照してください。