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

cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 22 févr. 2007 à 21:01 - Dernière réponse : cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention
- 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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 23 févr. 2007 à 19:22
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 #

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de cs_casy
Meilleure réponse
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 23 févr. 2007 à 23:09
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 #

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 22 févr. 2007 à 21:06
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 22 févr. 2007 à 21:15
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 22 févr. 2007 à 21:49
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 22 févr. 2007 à 21:56
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 22 févr. 2007 à 22:30
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 23 févr. 2007 à 12:04
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 23 févr. 2007 à 15:31
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 23 févr. 2007 à 16:48
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 23 févr. 2007 à 17:41
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 23 févr. 2007 à 17:59
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 23 févr. 2007 à 18:01
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 23 févr. 2007 à 22:28
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
cs_veler 724 Messages postés dimanche 26 novembre 2006Date d'inscription 23 janvier 2013 Dernière intervention - 24 févr. 2007 à 08:59
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.