IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Utilisation de RichTextBox pour coloration syntaxique


Sujet :

C#

  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut Utilisation de RichTextBox pour coloration syntaxique
    Bonjour,

    je tente d'utiliser une RichTextBox (WPF) pour colorer du texte, seulement ça marche pas des masses.

    Le contrôle étant super complexe de base déjà, je suis dans l'impossibilité de savoir pourquoi le code suivant ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
            TextRange range = new TextRange(MyTextInput.Document.ContentStart, MyTextInput.Document.ContentEnd);
            range.Text = @"TOP a
    multiline text or file END";
            Regex reg = new Regex("(top|file|end)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
     
            foreach (Match match in reg.Matches(range.Text))
            {
                TextPointer start = range.Start.GetPositionAtOffset(match.Index, LogicalDirection.Forward);
                TextPointer end = range.Start.GetPositionAtOffset(match.Index + match.Length, LogicalDirection.Backward);
                // text contient bien le texte que je souhaite colorer
                string text = range.Text.Substring(match.Index, match.Length);
                // Mais ici ...
                TextRange textrange = new TextRange(start, end);
                textrange.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.Blue));
                textrange.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
            }
    En fait, seul TOP est bien coloré, file & end ne le sont pas alors que je boucle bien dessus. Je ne comprend pas d'où peux provenir le problème, si vous avez des idées ...
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    A mon avis tu ferais mieux d'utiliser un composant spécialisé plutôt qu'un RichTextBox... Il y a des contrôles open source de coloration syntaxique pour WinForms, que tu peux utiliser en WPF (Scintilla.NET, ICSharpCode.TextEditor qui fait partie de SharpDevelop). Sinon la v4 de SharpDevelop est en WPF, et il y a aussi un contrôle de coloration syntaxique (ICSharpCode.AvalonEdit), que j'ai déjà utilisé avec succès il y quelques mois (c'est encore en beta il me semble). Il y a un article à ce sujet sur CodeProject, je ne sais pas s'il est encore d'actualité

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Salut Thomas,

    en fait si je veux faire ça c'était dans le but de pratiquer, j'ai vu qu'il y avait des trucs tout fait mais ne connaissant que peut le WPF, j'me suis dis que ça pouvait être sympa de faire un truc simple de la sorte

    Mais bon, je pense que je vais quand même finir par regarder tes pistes étant donné la complexité d'utilisation de la RTB ...
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Ah, au passage, j'ai vu que Visual Studio (itself) embarquait la coloration syntaxique pour le T-SQL, je vais donc rajouter mes extensions persos pour que ça soit considéré comme du SQL (et donc disposer de la coloration syntaxique).

    Le seul point bloquant c'est que mes fichiers sont encodés en ASCII / UNIX, va falloir que je fasse une extension pour VS pour que le traitement se passe correctement ...
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Arnaud F. Voir le message
    Ah, au passage, j'ai vu que Visual Studio (itself) embarquait la coloration syntaxique pour le T-SQL
    Euh... je vois pas de quoi tu parles. VS a la coloration syntaxique pour tous les langages qu'il supporte, mais comment tu fais pour l'utiliser dans ton propre code ?

  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Euh... je vois pas de quoi tu parles. VS a la coloration syntaxique pour tous les langages qu'il supporte, mais comment tu fais pour l'utiliser dans ton propre code ?
    En fait mon propre code, c'est des procédures stockées en T-SQL (mais pour Sybase, pas pour MS-SQL Server), donc je pourrais très bien utiliser l'environnement VS pour afficher et éditer mes procédures stockées.

    Je voulais faire un "éditeur" de fichier texte pour les procédures T-SQL, mais finalement...

    Après le top serait d'avoir une extension qui m'ouvre mes fichiers (qui sont en Unix/Ansi), les encodent en un format lisible par VS (Windows/UTF-8) et dès que je sauve me le remette dans le format original (avec possibilité de compilation sur un serveur prédéfini).

    S'plus clair?
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ah ok, je croyais que tu avais trouvé le moyen de réutiliser l'éditeur de VS ^^

    Citation Envoyé par Arnaud F. Voir le message
    Après le top serait d'avoir une extension qui m'ouvre mes fichiers (qui sont en Unix/Ansi), les encodent en un format lisible par VS (Windows/UTF-8) et dès que je sauve me le remette dans le format original (avec possibilité de compilation sur un serveur prédéfini).
    Bah VS supporte très bien l'encodage ANSI et les fins de ligne UNIX, non ? Par contre à l'enregistrement je suis pas sûr qu'il conserve le format d'origine...

    EDIT: je viens de tester, apparemment oui...

  8. #8
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Bah VS supporte très bien l'encodage ANSI et les fins de ligne UNIX, non ? Par contre à l'enregistrement je suis pas sûr qu'il conserve le format d'origine...

    EDIT: je viens de tester, apparemment oui...
    Je suis intéressé , tu dis que juste en ouvrant le fichier, même si c'est du UNIX / ANSI et qu'en sauvegardant il garde les deux propriétés? Si c'est ça, c'est carrément génial comme outil (ça m'évitera plein de dév )
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Arnaud F. Voir le message
    Je suis intéressé , tu dis que juste en ouvrant le fichier, même si c'est du UNIX / ANSI et qu'en sauvegardant il garde les deux propriétés? Si c'est ça, c'est carrément génial comme outil (ça m'évitera plein de dév )
    Bah c'est ce que j'ai observé en tous cas... mais n'hésite pas à faire le test toi-même, j'ai pu me planter

  10. #10
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Bah c'est ce que j'ai observé en tous cas... mais n'hésite pas à faire le test toi-même, j'ai pu me planter
    Je n'y manquerai pas
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  11. #11
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Bon j'ai testé, ça fait bien l'affaire en effet.

    Par contre y a des bémols comme la coloration syntaxique qui tient pas compte des variables et d'autres trucs, dommage, je pense rester sur mon éditeur actuel du coup

    pour l'aide
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  12. #12
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par Arnaud F. Voir le message
    Bon j'ai testé, ça fait bien l'affaire en effet.

    Par contre y a des bémols comme la coloration syntaxique qui tient pas compte des variables et d'autres trucs, dommage, je pense rester sur mon éditeur actuel du coup

    pour l'aide
    => Microsoft Management Studio ;-)
    c'est ca l'outil pour les DBA et l'édition de T-SQL
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  13. #13
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    => Microsoft Management Studio ;-)
    c'est ca l'outil pour les DBA et l'édition de T-SQL
    Je viens de télécharger et tester, bon mis à part que ça ne fonctionne que pour MSSQL (ce qui se comprendre), je trouve la coloration syntaxique super moche !

    Impossible de mettre les variables dans une autre couleur, pareil pour les chaînes de caractères ("", ''), bref un truc bien laid
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  14. #14
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Est-ce que tu connais Notepad++ ?

    Pas mal de langage sont déjà connu et tu peux créer ton langage perso (avec tes mots clés, ta coloration syntaxique...).

  15. #15
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par Arnaud F. Voir le message
    Je viens de télécharger et tester, bon mis à part que ça ne fonctionne que pour MSSQL (ce qui se comprendre), je trouve la coloration syntaxique super moche !

    Impossible de mettre les variables dans une autre couleur, pareil pour les chaînes de caractères ("", ''), bref un truc bien laid
    t'es juste une mega faignasse strasbourgeoise!!!
    http://winterdom.com/2007/10/colorsc...nagementstudio

    c'est pareil sous 2008!
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  16. #16
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    t'es juste une mega faignasse strasbourgeoise!!!
    http://winterdom.com/2007/10/colorsc...nagementstudio

    c'est pareil sous 2008!
    Tu l'as dis, tu me connais :-P j'vais jeter un oeil a ton lien et par contre faudra que je te capte pour discuter d'un truc (pour MS).

    Maitre!
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/01/2016, 13h16
  2. regexp pour coloration syntaxique block preprocesseur emacs
    Par rogue-spectre dans le forum Fortran
    Réponses: 4
    Dernier message: 19/07/2012, 22h24
  3. regexp pour coloration syntaxique block preprocesseur emacs
    Par rogue-spectre dans le forum Fortran
    Réponses: 1
    Dernier message: 10/07/2012, 20h37
  4. Script pour coloration syntaxique de code html
    Par piotrr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 25/03/2010, 22h30
  5. Richtextbox et coloration syntaxique
    Par titip dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/05/2009, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo