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 :

Coloriser les commentaires (richTextBox) [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Points : 43
    Points
    43
    Par défaut Coloriser les commentaires (richTextBox)
    Bonjour
    Dans un richTextBox je cherche a colorier mes "commentaires"
    Malgre le bon tuto http://stormimon.developpez.com/dotn...ns-regulieres/
    je n arrive pas a le faire
    dans mon cas les "commentaires" commence par %
    et ce termine a la fin de la ligne
    remarque : le commentaire peut contenir des %
    merci de votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 107
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    Pour colorier les commentaires, il faut:
    1) repérer la position du caractère "%" et celui de la fin de la ligne
    2) sélectionner le texte entre ces 2 limites
    3) appliquer à la sélection la couleur.

    Exemple de coloriage en rouge:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    richTextBox1.SelectionStart = richTextBox1.GetFirstCharIndexFromLine(richTextBox1.Lines.Count() - 1);
    richTextBox1.SelectionLength = richTextBox1.Lines[richTextBox1.Lines.Count() - 1].Length;
    richTextBox1.SelectionColor = Color.Red;

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour,
    vous pouvez déjà tester cette Regex.
    Si elle convient, mettre en couleur reste simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                string pattern = @"%.+$";
     
                // Initialisation de la Regex avec option ignorant la casse (accepte EXE, exe etc...)
                Regex r = new Regex(pattern, RegexOptions.Multiline);
     
                // On récupère les groupes qui matchent le pattern
                MatchCollection mc = r.Matches(txtSource.Text);
     
                // On boucle sur la collection des occurrences.
                foreach (Match match in mc)
                {
                    Console.WriteLine(match);
                }
    %.+$ = caractère % suivi de 1 ou plusieurs caractères .+ et fin de ligne $.
    Ne pas oublier l'option Multiligne.

  4. #4
    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
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    private void ColorComments(RichTextBox rtb)
    {
        // Sauvegarder la sélection pour la rétablir après
        int currentStart = rtb.SelectionStart;
        int currentLength = rtb.SelectionLength;
     
        // Tout remettre dans la couleur par défaut
        rtb.SelectAll();
        rtb.SelectionColor = rtb.ForeColor;
     
        // Trouver les commentaires
        var matches = Regex.Matches(rtb.Text, "%.*");
        foreach (Match match in matches)
        {
             // Colorier chaque commentaire
             rtb.SelectionStart = match.Index;
             rtb.SelectionLength = match.Length;
             rtb.SelectionColor = Color.Green;
        }
     
        // Rétablir la sélection
        rtb.SelectionStart = currentStart;
        rtb.SelectionLength = currentLength;
        rtb.SelectionColor = rtb.ForeColor;
    }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    merci a chrismonoye (ta solution fonctionne)
    je n’étais pas très loin de la solution avec mon patter
    mais surtout il me manquait l option multiligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                    string comments = @"%.+$";
                    MatchCollection commentMatches = Regex.Matches(richTextBox1.Text, comments, RegexOptions.Multiline);
                    foreach (Match m in commentMatches)
                    {
                        richTextBox1.SelectionStart = m.Index;
                        richTextBox1.SelectionLength = m.Length;
                        richTextBox1.SelectionColor = Color.Green;
                    }

  6. #6
    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
    Bizarre, je n'ai pas eu besoin de l'option Multiline pour ma solution... mais je n'utilise pas "$" pour marquer la fin de la ligne, c'est peut-être pour ça

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

Discussions similaires

  1. xpath-->test sur les commentaires
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/07/2005, 12h14
  2. [debutant] les commentaires ????
    Par ghohm dans le forum ASP
    Réponses: 3
    Dernier message: 24/03/2004, 10h18
  3. Tchart et les commentaires
    Par danuz dans le forum XMLRAD
    Réponses: 3
    Dernier message: 30/09/2003, 12h53

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