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

Windows Forms Discussion :

Colorer des mots automatiquement dans une richtextbox


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut Colorer des mots automatiquement dans une richtextbox
    Bonjour,

    J'ai un formulaire avec une richtextbox qui contient un texte quelconque.
    Ce que je voudrais, c'est qu'à l'appel d'une fonction, toutes les occurences d'un mot précis contenue dans richtextbox1.text soit coloré dans une certaine couleur.

    quelqu'un sait comment faire cela ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Bonjour,

    Quelque chose dans le genre genre doit fonctionner, j'ai juste un formulaire avec une richtextBox. Le mot "test" est mis en rouge s'il apparait plusieurs fois :

    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
    public Form1()
            {
                InitializeComponent();
     
                richTextBox1.Text = "mot test titi toto tutu test blabla ";
                Colore(0);
     
            }
     
            private void Colore(int StartIndex)
            {
                // Tant qu'une occurence a trouver
                int index = richTextBox1.Text.IndexOf("test", StartIndex);
                if (index != -1)
                {
                    richTextBox1.Select(index, "test".Length);
                    richTextBox1.SelectionColor = Color.Red;
                    Colore(index + "test".Length);
                }
                else
                {
                    richTextBox1.DeselectAll();
                }
            }

  3. #3
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut
    Merci pour le code, il fonctionne très bien, cependant, je ne peut plus gérer la coloration au cours de la frappe

  4. #4
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Bonjour,

    Essaie en plaçant l'appel de la fonction Colore() dans l'évènement TextChanged() ou sur l'évènement KeyPress()

  5. #5
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut
    En fait c'est ce que j'ai fait. Le code change bien de couleur lors de la frappe, mais le curseur se replace juste avant le mot qui a changé de couleur.

  6. #6
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Bonjour,

    Pour replacer le curseur à la fin, dans le else, avant le DeselectAll(); tu ajoutes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    richTextBox1.Select(richTextBox1.Text.Length - 1, 0);
    Ca replace le curseur sur le dernier caractère

  7. #7
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut
    ok, sa marche.

    Une dernière chose (après j'arrête d'embêter mon monde ) :

    Tout fonctionne pour le mot test mais si je tape : "attester", il me colorie aussi la partie "test" du mot... Comment je peux éviter cela ?

  8. #8
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Bonjour,

    Et bien dans la chaine ajouter un espace avant et après : " test ".

  9. #9
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut
    Ah oui, que je suis bête !
    Merci en tout cas, ça marche super !

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

Discussions similaires

  1. Ajouter des Controles automatiquement dans une collection
    Par dragondumond dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/05/2013, 16h57
  2. [SP-2007] Déposer des fichiers automatiquement dans une base Sharepoint
    Par Mackayel dans le forum SharePoint
    Réponses: 2
    Dernier message: 03/10/2012, 09h07
  3. Réponses: 2
    Dernier message: 28/03/2008, 18h24
  4. Réponses: 22
    Dernier message: 09/09/2006, 03h34
  5. Comment stocker des mots clés dans une bas Mysql
    Par renofx1 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 05/01/2006, 00h57

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