Editeur syntaxique [vb2005]

Description

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

Conclusion :


J'ai joint une petite interface accompagné d'un PropertyGrid pour l'aperçu des fonctionnalités (voir image)
Je remercie romagny13 pour son colorateur XML/XSL.

Des fonctions comme Undo et Redo ont été ré-éecrites car elles n'étaient pas compatible avec l'interface ITextDocument. J'ai aussi ré-écrit la fonction LoadFile et SaveFile pour empêcher de passer en paramètre un RichTextBoxStreamType autre que PlainText.

Pour le faire fonctionner, il vous suffit juste de copier le répertoire CodeEditor dans votre projet, de le compiler une fois pour actualiser le FormDesigner et le contrôle apparaîtra dans la boîte à outil.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.