Positionnement RichTextBox besoin d'idee stp

Résolu
Signaler
Messages postés
6
Date d'inscription
samedi 23 mai 2009
Statut
Membre
Dernière intervention
9 avril 2011
-
Messages postés
6
Date d'inscription
samedi 23 mai 2009
Statut
Membre
Dernière intervention
9 avril 2011
-
Bonjour,

voila mon problème : je veux que mon RichTextBox détecte certain mot pour les mettres en blue ou autre couleur. Pour le moment voila ce que j'ai

Code Visual Basic :

Dim motARechercher As String = "if"
Dim motPresent As String = ""


If CInt(rtbCode.Find(motARechercher)) >= 0) Then
rtbCode.SelectionColor = Color.Blue
rtbCode.Select(rtbCode.Text.Length + 1, rtbCode.Text.Length + 1)

End If


Il trouve le mot et le met en bleu, le problème c que il le met en bleu un seul foit le mot :s

Merci

4 réponses

Messages postés
90
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
31 mars 2014

Salut,

Je pense que c'est seulement la position du premier mot que RichTextBox te renvoie. tu dois donc repeter la recherche jusqu'a ce qu'il trouve tous les mots.

essai avec ca
        Dim motARechercher As String = "if"
        Dim motPresent As String = ""
        Dim position As Integer
        Dim debut As Integer
        debut = 0
        position = rtbcode.Find(motARechercher, debut, RichTextBoxFinds.WholeWord)

        Do While position >= 0
            rtbcode.SelectionColor = Color.Blue
            'rtbcode.Select(rtbcode.Text.Length + 1, rtbcode.Text.Length + 1)
            debut = position + motARechercher.Length
            position = rtbcode.Find(motARechercher, debut, RichTextBoxFinds.WholeWord)
        Loop
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Bonjour,
autrement il y a les expressions régulières, rapides.
Mais il faut un certain temps pour les assimiler.
Voici un exemple de code :

    Sub MisEnFormeSerie(ByVal MonTxt As RichTextBox, ByVal motARechercher As String, _
               ByVal emSize As Single, ByVal couLeur As String, ByVal style As FontStyle)

        '*** Définit l'expression à rechercher (les "\b" sont des délimiteurs pour 
        '    ne chercher que des mots entiers).
        Dim reCherchText As Regex = New Regex("\b" & motARechercher & "\b")
        '*** Récupère le premier mot trouvé.
        Dim mReCherchText As Match = reCherchText.Match(MonTxt.Text)
        '*** Collection de tous les mots cherchés existants dans le texte.
        Dim mcReCherchText As MatchCollection = reCherchText.Matches(MonTxt.Text)
        '*** Sert  à poursuivre la recherche suivant le mot trouvé en cours.
        Dim indexReCherchText As Integer

        With MonTxt
            '*** Tous les mots de la collection seront colorés au choix suivant, avec la police voulue.
            For Each mReCherchText In mcReCherchText
                .Select(mReCherchText.Index, mReCherchText.Length)
                indexReCherchText = mReCherchText.Index + mReCherchText.Length
                Select Case couLeur
                    Case "bleu"
                        .SelectionFont = New Font("Tahoma", emSize, style)
                        .SelectionColor = Color.DarkBlue
                    Case "vert"
                        .SelectionFont = New Font("Tahoma", emSize, style)
                        .SelectionColor = Color.ForestGreen
                    Case "rouge"
                        .SelectionFont = New Font("Tahoma", emSize, style)
                        .SelectionColor = Color.Red
                    Case "violet"
                        .SelectionFont = New Font("Tahoma", emSize, style)
                        .SelectionColor = Color.SlateBlue
                End Select
            Next
        End With

    End Sub


Ne pas oublier l'import suivant :
Imports System.Text.RegularExpressions


Et pour tester, créer un bouton appelé "btnColorietoutesOccur" et y mettre le code suivant :

    Private Sub btnColorietoutesOccur_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles btnColorietoutesOccur.Click
        MisEnFormeSerie(rtbCode, "if", 12, "bleu", FontStyle.Bold)
    End Sub
Messages postés
6
Date d'inscription
samedi 23 mai 2009
Statut
Membre
Dernière intervention
9 avril 2011

merci xranto ta raison d'un part
mais le while blocké l'application parsque le position tjr >0 don on tombé a un boucl infini :s a tt les cas merci pr twa c gentil de ta part mon ami
Messages postés
6
Date d'inscription
samedi 23 mai 2009
Statut
Membre
Dernière intervention
9 avril 2011

christoni c parfait merci bcp :d
mé moi je veux travailé avec l'evenement TextChanged et ca marche pa