Même si je sais que l'objectif ci-dessus est plutôt difficile à atteindre, je sais que cela peut être fait.Syntaxe efficace, sans scintillement, plus haute pour vb.net qui fonctionne aussi bien que celle de l'IDE
Que celui que je fait le fait:
Il compare chaque mot à un mot de la liste, si son match, il sélectionnera physiquement le texte et changer la couleur, et enfin il retournera le carat la position où il était quand il a mis en évidence.
Problèmes avec ceci:
. Clignotantes Ça scintille toujours. J'ai réussi à réduire le scintillement en faisant dormir le thread pendant 50 millisecondes, mais je ne pouvais pas m'en débarrasser complètement (cela ne ralentissait pas non plus la frappe). Maintenant, une autre chose que j'ai essayée était d'utiliser un second RichTextBox pour que la surbrillance se produise, mais cela ne faisait aucune différence évidente.
Défilement. Il fera défiler le RichTextBox si la quantité de texte est assez grande pour provoquer l'affichage des barres de défilement.
Suppression de texte. Si vous supprimez une partie d'un mot qui a été surligné, il conservera le formatage des couleurs même si le mot est maintenant modifié. Il sélectionne aussi physiquement le mot entier, ce qui me déconcerte sans cesse.
Fermeture de la fenêtre. Étant donné que le sous-programme de mise en évidence est appelé chaque fois que l'événement TextChanged de RichTextBox est appelé, il est apparemment déclenché lorsque la fenêtre se ferme? Cependant, étant donné que la fenêtre se ferme, cela ralentit tout le processus. Par conséquent, avec un fichier plus volumineux, il peut s'écouler entre 5 et 10 secondes avant que chaque mot clé ne soit mis en surbrillance.
Comment puis-je résoudre chacun de ces problèmes? Je ne veux pas utiliser le composant de quelqu'un d'autre, je veux spécifiquement utiliser le mien.
Merci pour l'aide, j'ai passé plusieurs heures à ce sujet et jusqu'à présent, je suis satisfait des résultats.
Quelques idées que j'ai eu:
modifier physiquement le RTF au lieu d'utiliser un construit en méthode pour changer la couleur du texte, ce serait de se débarrasser de toutes mes questions. En supposant qu'un mot-clé était "The" (par exemple), quel serait le rtf pour le rendre bleu?
Ne pas utiliser la coloration syntaxique (dernier recours ici)
Mon objectif final: Un surligneur de syntaxe pour une RichTextBox qui fonctionne aussi bien que celui de Visual Studio.
EDIT: Y a-t-il un autre composant qui serait mieux pour cela qu'un RichTextBox?
Winforms, merci! Ill consulter votre publication. – Cyclone