Voici une classe héritée d'un RichTextBox qui permet de réaliser une coloration syntaxique basé sur la méthode utilisée dans Microsoft Snippet Editor
Elle utilise les interfaces TOM (ITextDocument, ITextRange...) pour fonctionner ainsi qu'un bon nombre des API Windows et travaille ligne par ligne.
J'y ai mis 4 colorateurs exemples (VB.Net, CSS, JavaScript, XML) et j'ai ajouté une fonction d'impression avec syntaxe (source MSDN). Le code est assez commenté pour expliquer le fonctionnement dans les détails.
Il y a possibilité de :
- Colorer seulement les lignes que l'on veut, les lignes visibles ou encore tout le texte (toutes ces fonctions sont automatisées)
- Surligner des rangées de code, la ligne en cours d'édition
- Remplacer toutes les occurences trouvées
- Surligner les mots remplacés
- Imprimer le code mis en forme en passant simplement le PrinterSettings obtenu par le PrintDialog
- Obtenir le PrintDocument avec la syntaxe colorée
- Obtenir la position du curseur (ligne et colonne).
Ainsi que toutes les autres fonctions du RichTextBox