Я создаю функцию, которая принимает RichTextBox и имеет доступ к списку ключевых слов и «плохих слов». Мне нужно выделить любые ключевые слова и плохие слова, которые я нахожу в RichTextBox , когда пользователь печатает , что означает, что функция вызывается каждый раз, когда выпускается клавиша редактирования.
Я написал эту функцию, но слова и курсор в окне слишком сильно мерцают для удобства.
Я нашел решение - отключить возможность RichTextBox перекрашивать себя, пока я редактирую и форматирую его текст. Однако единственный способ, которым я знаю, это переопределить функцию «WndProc» и перехватить (что я собирался собрать) сообщение перерисовки следующим образом:
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == 0x00f) {
if (paint)
base.WndProc(ref m);
else
m.Result = IntPtr.Zero;
}
else
base.WndProc(ref m);
}
Где булево значение «paint» установлено в false перед тем, как я начинаю выделять, и в true, когда я заканчиваю. Но, как я уже сказал, функция, которую я выполняю, должна принимать RichTextBox; Я не могу использовать подкласс.
Итак, есть ли способ отключить автоматическое перекрашивание RichTextBox 'извне?'