Précédent   Forum du club des développeurs et IT Pro > Dotnet > Général Dotnet > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, faq, sources pour .NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/11/2012, 19h31   #1
Rachel
Expert Confirmé
 
Avatar de Rachel
 
Femme yannick inizan
Padawan
Inscription : février 2011
Messages : 444
Détails du profil
Informations personnelles :
Nom : Femme yannick inizan
Âge : 26
Localisation : France, Cher (Centre)

Informations professionnelles :
Activité : Padawan
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 444
Points : 3 631
Points : 3 631
Envoyer un message via MSN à Rachel Envoyer un message via Skype™ à Rachel
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;
                     }
                }
    }
__________________
(marquer un post résolu si vous êtes satisfait de la réponse )
mon dépôt (mono, monodevelop, ...) : deb(-src) http://breizhodrome.free.fr raring main
ma page github : https://github.com/inizan-yannick
Rachel est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2012, 00h43   #2
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 798
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
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 : 17 798
Points : 34 086
Points : 34 086
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).
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 05h13   #3
Rachel
Expert Confirmé
 
Avatar de Rachel
 
Femme yannick inizan
Padawan
Inscription : février 2011
Messages : 444
Détails du profil
Informations personnelles :
Nom : Femme yannick inizan
Âge : 26
Localisation : France, Cher (Centre)

Informations professionnelles :
Activité : Padawan
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 444
Points : 3 631
Points : 3 631
Envoyer un message via MSN à Rachel Envoyer un message via Skype™ à Rachel
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
__________________
(marquer un post résolu si vous êtes satisfait de la réponse )
mon dépôt (mono, monodevelop, ...) : deb(-src) http://breizhodrome.free.fr raring main
ma page github : https://github.com/inizan-yannick
Rachel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 10h23   #4
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 798
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
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 : 17 798
Points : 34 086
Points : 34 086
Ah ouais mais si tu modifies le message d'origine, ma réponse n'a plus de sens
Bon ça fait rien
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web