Sambil anda menaip teks ke dalam kawalan RichTextBox, anda boleh ingin menyerlahkan kata kunci tertentu atau perkataan yang tidak diingini dalam masa nyata. Untuk mencapai matlamat ini, fungsi biasanya digunakan dengan setiap ketukan kekunci, yang boleh mengakibatkan kelipan perkataan dan kursor yang berlebihan.
Dalam konteks ini, melumpuhkan pengecatan semula ialah penyelesaian yang dicadangkan untuk meminimumkan gangguan visual. Satu kaedah untuk melakukan ini ialah dengan mengatasi fungsi "WndProc" dan memintas mesej cat semula. Walau bagaimanapun, jika fungsi yang anda gunakan memerlukan lulus parameter RichTextBox, pendekatan ini menjadi mencabar.
Penyelesaian alternatif ialah memanfaatkan kaedah "BeginUpdate" dan "EndUpdate", yang membolehkan anda menyekat lukisan dan mencetuskan ia sebaik sahaja anda selesai mengubah suai teks. Malangnya, kaedah ini tidak didedahkan dalam kelas RichTextBox.
Untuk menangani kesilapan ini, anda boleh menambah kaedah ini sendiri dengan membuat kelas tersuai yang diwarisi daripada RichTextBox. Tampalkan kod berikut ke dalam kelas baharu yang ditambahkan pada projek anda:
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; }
Setelah disusun, lepaskan kawalan MyRichTextBox ke dalam borang anda daripada kotak alat. Sebagai alternatif, anda boleh memanggil fungsi SendMessage terus dengan mesej WM_SETREDRAW sebelum dan selepas mengemas kini teks RichTextBox.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghapuskan Kelipan Apabila Menyerlahkan Teks dalam RichTextBox Semasa Input Masa Nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!