Bonjour !
qq1 pourrait m'expliquer comment gérer la colration syntaxique d'un texte dans C#
du moins les bases !
merci d'avance !
Bonjour !
qq1 pourrait m'expliquer comment gérer la colration syntaxique d'un texte dans C#
du moins les bases !
merci d'avance !
C'est pas très dur d'appliquer une coloration sur un texte que tu charges dans ton richtextbox, ça devient un peu plus dur si tu veux appliquer cette coloration à la volée.
Schématiquement :
- Se brancher sur l'event TextChanged de ton contrôle
- Récupérer la ligne courante
- Faire une recherche/comparaison entre les mots de la ligne et un dictionnaire de mots-clés (choisir une collection rapide)
- Faire une séléction du texte en cas de correspondance, en prennant soin d'appliquer une couleur de séléction = couleur du background du contrôle
- Appliquer la couleur à la séléction
- Ajouter une technique "anti-flicker" sur ton contrôle pour un affichage fluide.
Une recherche sur google devrait te permettre de trouver quelques exemples...Sinon, télécharge SharpDevelop et analyse son code source, l'implémentation de la coloration synthaxique est plutôt bonne.
merci a toi pour ton explication !
c'est le principe que je pensé
Ca ne risque pas d'être un peu lourd !
si je veux faire la coloration a la volée ?
Le point sensible est évidemment la recherche des mots-clés...
La "lourdeur" dépend essentiellement du nombre de mots que tu vas chercher et de l'implémentation de ta fonction de recherche.
J'ai développé une application du type Analyseur de requêtes SQL avec la liste des mots dans une hashtable chargée en cache...aucun problème.
Le second problème qui se pose est au niveau de la fluiditié d'affichage.
Par défaut, ton richtextbox risque de clignoter...
merci pour tes explications !
Si j'avais du faire ça j'aurais créé 2 textboxes :
* on écrit dans le second textbox pdt qu'on affiche le premier
* on swappe les deux textbox
(à la manière du doublebuffering OpenGL)
Il y a sans doute une façon de faire ça en utilisant une fonctionnalité du Framework .NET
Si c'est le cas j'aimerais bien la connaitre
Salut a tous, j'ai réussi a faire la coloration avec une richtextbox, pas de scintillement car j'ai utiliser 2 richtextbox.
Seul souci, c'est que dans textchanged, je passe au début le rtf et le text de la rtb1 a la rtb2, je fait la detection, puis je transfert tous de rtb2 a rtb1.
Plus il y a de text, plus c'est lent.
Pensez vous que c'est a cause des transfert de rtf et de text?
Ma coloration se fait par ligne.
J'aimerais vraiment que la coloration soit plus rapide, car je fait un Logiciel de develloppement et la coloration serai le bien venue.
quand je voit des logiciels qui colore leur text instantannément et que je vois le manque de rapidité du mien, je suis dégouté lol.
Si quelqu'un avait déja travailler sur de la coloration pouvait m'aiguiller ça serait super.
Salut,
je t'invite à consulter cette source :
http://www.codeproject.com/KB/edit/S...chTextBox.aspx
ou encore
http://www.codeproject.com/info/sear...w=color+syntax
Partager