"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment éliminer le scintillement RichTextBox lors de la mise en évidence de la syntaxe?

Comment éliminer le scintillement RichTextBox lors de la mise en évidence de la syntaxe?

Publié le 2025-04-17
Parcourir:333

How to Eliminate RichTextBox Flickering During Syntax Highlighting?

Désactivation Repainte pour la syntaxe RichtextBox mettant en surbrillance

lors de l'exécution de la syntaxe en surbrillance dans un RichtextBox pendant l'entrée utilisateur, la résolution de scintillement exige la détérioration de la désactivation. Solution

La solution actuelle implique de remplacer la fonction "wndproc" pour intercepter et supprimer les messages de repeindre. Cependant, cette approche n'est pas pratique pour les fonctions externes en travaillant avec un RichTextBox fourni.

surmonter la surveillance

Une approche plus efficace consiste à ajouter les méthodes manquantes de début et d'endouchement à la classe RichtextBox. Ces méthodes génèrent le message WM_SetdreDraw pour supprimer la repens. Utilisation de System.Windows.Forms; Utilisation de System.Runtime.InteropServices; classe 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")] SendMessage extern statique privé (intptr hwnd, int msg, intptr wp, intptr lp); const int wm_setRaw = 0x0b; }

usage

Vous pouvez maintenant utiliser ces méthodes pour désactiver et activer la repeinture dans votre fonction de mise en évidence de syntax. fonction directement avant et après la mise à jour du texte.

sendMessage (this.handle, wm_setdreDraw, (intptr) 0, intptr.zero); // Désactiver la repeinture // Mette à jour le texte SendMessage (this.handle, wm_setRedraw, (intptr) 1, intptr.zero); // Activer la repeinture this.invalidate ();

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3