Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Inactif

    Homme Profil pro yannick inizan
    développeur Vala
    Inscrit en
    février 2011
    Messages
    481
    Détails du profil
    Informations personnelles :
    Nom : Homme yannick inizan
    Âge : 27
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2011
    Messages : 481
    Points : 3 345
    Points
    3 345

    Par défaut [Source] RichTextBox avec fonction de recherche

    Voici un contrôle .Net héritant de RichTextBox, permettant de surligner chaque occurence du mot recherché :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public static class RichTextBoxExtensions
        {
            public static void HighlightText(this RichTextBox richTextBox, string word, Color color){
    			int startIndex = 0, index;
    			richTextBox.Select(0,richTextBox.Text.Length);
    			richTextBox.SelectionColor = richTextBox.ForeColor;
    			if(word.Length==0)return;
     
                         while((index = richTextBox.Text.IndexOf(word, startIndex)) != -1)
                         {
                            richTextBox.Select(index, word.Length);
                            richTextBox.SelectionColor = color;
                            startIndex = index + word.Length;
                         }
                    }
        }

  2. #2
    Rédacteur/Modérateur



    Homme Profil pro Thomas Levesque
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 204
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Levesque
    Âge : 33
    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 204
    Points : 36 687
    Points
    36 687

    Par défaut

    Salut Yannick,

    Merci pour ta contribution !

    Si je peux me permettre une petite suggestion, cette méthode serait un bon candidat pour une méthode d'extension :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
            public static class RichTextBoxExtensions
    	{
    		public static void HighlightText(this RichTextBox richTextBox, string word, Color color){  
                         int s_start = richTextBox.SelectionStart, startIndex = 0, index;
     
                         while((index = richTextBox.Text.IndexOf(word, startIndex)) != -1)
                         {
                            richTextBox.Select(index, word.Length);
                            richTextBox.SelectionColor = color;
                            startIndex = index + word.Length;
                         }
     
                         richTextBox.SelectionStart = s_start;
                         richTextBox.SelectionLength = 0;
                         richTextBox.SelectionColor = richTextBox.ForeColor;
        	        }
    	}
    Ca s'utiliserait exactement de la même manière.

    Tu vas me dire, qu'est-ce que ça change ? Bah si tu as déjà une application avec des RichTextBox, c'est pas très pratique de tous les remplacer par des SearchTextBox, recabler les évènements, etc... Avec une méthode d'extension, pas besoin de changer les contrôles existants, tu peux utiliser la méthode comme si c'était un membre de la classe RichTextBox. Bien sûr ça suppose d'utiliser le compilateur C# 3 ou plus (donc VS2008 ou plus récent).

  3. #3
    Inactif

    Homme Profil pro yannick inizan
    développeur Vala
    Inscrit en
    février 2011
    Messages
    481
    Détails du profil
    Informations personnelles :
    Nom : Homme yannick inizan
    Âge : 27
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2011
    Messages : 481
    Points : 3 345
    Points
    3 345

    Par défaut

    Citation Envoyé par tomlev Voir le message
    Salut Yannick,

    Merci pour ta contribution !

    Si je peux me permettre une petite suggestion, cette méthode serait un bon candidat pour une méthode d'extension :
    [...]
    Ca s'utiliserait exactement de la même manière.

    Tu vas me dire, qu'est-ce que ça change ? Bah si tu as déjà une application avec des RichTextBox, c'est pas très pratique de tous les remplacer par des SearchTextBox, recabler les évènements, etc... Avec une méthode d'extension, pas besoin de changer les contrôles existants, tu peux utiliser la méthode comme si c'était un membre de la classe RichTextBox. Bien sûr ça suppose d'utiliser le compilateur C# 3 ou plus (donc VS2008 ou plus récent).
    Merci de ce complément, je n'avais jamais utilisé les extensions Je me suis permis de corriger l'extension, pour que la coloration soit nulle quand la recherche est nulle

  4. #4
    Rédacteur/Modérateur



    Homme Profil pro Thomas Levesque
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 204
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Levesque
    Âge : 33
    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 204
    Points : 36 687
    Points
    36 687

    Par défaut

    Ah ouais mais si tu modifies le message d'origine, ma réponse n'a plus de sens
    Bon ça fait rien

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •