Sto creando una funzione che accetta un RichTextBox e ha accesso a un elenco di parole chiave & "badwords". Devo evidenziare qualsiasi parola chiave & che trovo nel RichTextBox mentre l'utente sta digitando, il che significa che la funzione viene chiamata ogni volta che viene rilasciato un tasto di modifica.Evidenziazione sintassi RichTextBox in tempo reale - Disabilitazione del repaint
Ho scritto questa funzione, ma le parole e il cursore nel riquadro sfarfallio troppo per il comfort.
Ho scoperto una soluzione - per disabilitare la capacità del RichTextBox di ridisegnare se stesso mentre sto modificando e formattando il suo testo. Tuttavia, l'unico modo che conosco per farlo è quello di ignorare la funzione "WndProc" e intercetta (quello che ho su di raccogliere è) il messaggio di ridipingere come segue:
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);
}
Qualora il booleano 'vernice' è impostato su false appena prima di iniziare l'evidenziazione e su true quando ho finito. Ma come ho detto, la funzione che faccio deve contenere un RichTextBox; Non posso usare una sottoclasse.
Quindi, c'è un modo per disabilitare la ridipinture automatica di un RichTextBox "dall'esterno?"
Questa aggiunta alla classe non funziona per me. Causa alcuni problemi grafici e infine il controllo per smettere di funzionare completamente, in modo che non si possa nemmeno scorrere il cursore. FYI. – MoonKnight
Modalità di errore standard piuttosto quando si aggiorna il controllo da un thread di lavoro. –
Hans, sono relitivamente nuovo a questa roba. Cosa stai dicendo/sottintendendo quanto sopra? Che seguendo l'estensione di classe sopra, che gli aggiornamenti alla casella di testo dovrebbero essere eseguiti su un thread separato? Grazie per il tuo tempo. – MoonKnight