Mettre une couleur à une seul ligne d'un RichTextBox [Résolu]

Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
- - Dernière réponse : cs_veler
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
- 24 févr. 2007 à 08:59
Bonjours tous le monde, je cherche depuis assé longtemp à appliquer une couleur à une seul ligne d'un RichTextBox dont on connait les contenue de la ligne:
exemple: toutes les lignes égale à "HTML" les mettres en rouge.

Merci d'avance à tous

Bye

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
Bon voilà, je me suis occupé de toi.

Ce code ne colore que le mot recherché. Tous les mots correspondants dans le texte sont colorés.

Ce code suppose que tu as un RichTextBox sur ta feuille nommé RichTextBox1 et qu'il est chargé avec le texte à colorer. Il te faut aussi un bouton nommé Button1. C'est le click sur le bouton qui lancera la coloration. Le mot recherché est "html"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
Button1.Click
        Me.Cursor = Cursors.WaitCursor
        coloreMots(RichTextBox1, "html", Color.Red)
        Me.Cursor = Cursors.Default
End Sub

Private Sub coloreMots(ByVal obj As Object, ByVal txt
As String, ByVal clr As
Color)
        Dim rtb As RichTextBox = CType(obj,
RichTextBox)
        Dim idx, dep As Integer

        dep = 0
        Do
                idx = rtb.Find(txt, dep, RichTextBoxFinds.WholeWord)
                If Not (idx < 0) Then
                        rtb.SelectionStart = idx
                        rtb.SelectionLength =
txt.Length
                        rtb.SelectionColor = clr
                        dep = idx + txt.Length
                Else
                        Exit Do
                End If
        Loop
End Sub

Si ça marche pas, essaye de debugger la fonction coloreMots pour me dire où ça marche pas.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
tu peux essayer de sauvegarder la position juste avant la coloration et la rétablir juste après
Style :

Dim sav as integer = rtb.SelectionStart
....
Do
    ....
    ...
Loop
rtb.SelectionStart=sav
end sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Il te faut déterminer l'index de départ de ta ligne, attribuer cet index à la propriété .SelectionStart.
Il te faut déterminer l'index de fin de ta ligne, ça te donnera la longueur de la ligne, longueur que tu attribuera à la propriété .SelectionLenght.
Ensuite il ne te reste plus qu'à attribuer la bonne couleur à la propriété .SelectionColor

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
Merci. Euh, c'est pas que j'ai pas compris mais je ne sais pas trop comment m'y prendre. Tu pourrais me faire un exemple s'il te plaît.

Merci d'avance.

Bye

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Comme je t'ai dis, il faut déterminer la position du caractère de début, la position du caractère de fin. La différence entre les 2 te donne la longueur de la partie du texte à traiter.

En imaginant que carDeb contient la position du premier caractère, carFin la position du caractère de fin et que RTB1 est ta richtextbox, tu fais :

RTB1.SelectionStart = carDeb
RTB1.SelectionLenght = carFin-carDeb
RTB1.SelectionColor = Color.Salmon

Te reste plus qu'à déterminer le début et la fin du texte à colorer. Là je ne sais pas comment tu veux faire. Colorer une ligne particulière en connaissant son n°, colorer une ligne contenant un texte particulier, ....

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
Je vais essayer se que tu as dit, pour ce que tu ma dit en dernier, c'est pls "colorer une ligne contenant un texte particulier".

Si vous avez sa...
Merci d'avance

Bye

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Tiens, je te laisse étudier ce petit code. Il ne doit pas correspondre exactement à ce que tu cherche mais il va certainement te donner des idées.

Son but, colorer chacune des lignes ou un texte passé en paramètre est trouvé. Toute la ligne est coloré, toutes les lignes du richtextbox sont parcourues et celle contenant le texte sont colorées.
L'utilisation se fait ainsi : coloreText(TonControleRichtextbox, TextAChercher, CouleurAAppliquer)

        Private Sub coloreText(ByVal obj As
Object, ByVal txt As String, ByVal clr
As Color)
                Dim rtb As RichTextBox = CType(obj,
RichTextBox)
                Dim i, idx, dep As Integer

                dep = 0
                Do
                        idx = rtb.Find(txt, dep,
RichTextBoxFinds.None)
                        If Not (idx < 0) Then
                                i = rtb.GetLineFromCharIndex(idx)
                                rtb.SelectionStart =
rtb.GetFirstCharIndexFromLine(i)
                                rtb.SelectionLength =
rtb.Lines(i).Length
                                rtb.SelectionColor =
clr
                                dep = rtb.GetFirstCharIndexFromLine(i) +
rtb.Lines(i).Length
                        Else
                                Exit Do
                        End If
                Loop
        End Sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
Ralala, je comprend rien, sa fait rien ce script, que je l'ai modifié ou pas...

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
Presque victoire! Je vien de trouver un truc, sa cherche un text précit dans le richtextbox et sa lui donne une couleur mais il y a un bug, je lui ai dit de chercher le mot "html" et de le mettre en rouge et il ne me met que le "tml" en rouge. Voici le code source:

        RichTextBox1.Find(" html", RichTextBoxFinds.WholeWord, RichTextBoxFinds.NoHighlight)
        RichTextBox1.SelectionColor = System.Drawing.Color.Red

Merci d'avance.

Bye

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
regarde bien, c'est le code que je t'ai donné

sauf que moi, après avoir trouvé le mot, je récupere de quoi sélectionner toute la ligne pour la colorer

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
??? j'ai réessayé ton code, sa ne fonctionne pas. Je doit m'y prendre mal. Et puis, sa serrai plutôt colorier juste le mot comme sa, sur la même ligne, je pourai mettre plusieur mot mais qui on des couleurs diférentes. Aide moi, je m'en sort pas...

Merci d'avance

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Qu'est-ce qu'il ne marche pas dans mon code ????

Tu es en VB2003 ou VB2005 ???

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
Je suis en VB2005, ce qui ne marche pas? je ne sais pas, je constate juste qu'il ne se passe rien dans le richtextbox.
Voila

Merci d'avance

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
Génial, sa fonctionne sans problême. Euh, lol, une question:
A la place de faire un boutton, j'ai mit le code qui doit être dans le boutton dans le richtextbox comme sa, des que le text est modifié, il revérifie tous. le bleme est que des que je tape une lettre n'importe où dans le richtextbox, il m'envoie tous en bas de la page (je veut dire, au dernier mot "html" qu'il a vue.
Comment eviter cela.

Génial le script, tu as déja ta réponse accepté, reste plus que ce petit bugs mineure, si c'est pas toi qui trouve cette réponse, j'accepte quand même ta réponse, c'est la moindre des choses...

Merci d'avance

Bye

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler
Messages postés
724
Date d'inscription
dimanche 26 novembre 2006
Dernière intervention
23 janvier 2013
0
Merci
Salut. Merci, c'est génial, tous fonctionne sans problême, il me reste plus qu'à paramètrer tous sa et j'aurais finit. Big merci, je vais pouvoir continuer mon éditeur d'html.

Bye

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://jbaudoux.club.fr/veler/
Commenter la réponse de cs_veler

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.