Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Lumpuhkan Mengecat Semula dalam RichTextBox untuk Penyerlahan Sintaks Masa Nyata?
Melumpuhkan Cat Semula untuk Penyerlahan Sintaks Masa Nyata dalam RichTextBox
Anda perlu menyerlahkan kata kunci dan perkataan buruk dalam RichTextBox sambil pengguna menaip, tetapi kerlipan berlebihan yang disebabkan oleh pengecatan semula yang berterusan adalah kebimbangan. Walau bagaimanapun, kaedah standard untuk mengatasi fungsi "WndProc" dan memintas mesej cat semula memerlukan subkelas, yang tidak boleh dilaksanakan.
Nasib baik, anda boleh menangani isu ini dengan memperluaskan sendiri fungsi kelas RichTextBox. Begini caranya:
Buat kelas RichTextBox tersuai:
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; }
Gunakan kawalan tersuai:
Lumpuhkan pengecatan semula:
myRichTextBox1.BeginUpdate();
Dayakan mengecat semula:
myRichTextBox1.EndUpdate();
Dengan menggunakan kawalan RichTextBox tersuai, anda kini boleh menyerlahkan kata kunci dan perkataan buruk dalam masa nyata tanpa kelipan mengganggu yang disebabkan oleh pengecatan semula automatik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Lumpuhkan Mengecat Semula dalam RichTextBox untuk Penyerlahan Sintaks Masa Nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!