Positionnement RichTextBox besoin d'idee stp

Résolu
barrimaamine Messages postés 6 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 9 avril 2011 - 29 janv. 2010 à 22:52
barrimaamine Messages postés 6 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 9 avril 2011 - 31 janv. 2010 à 17:23
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

xranto Messages postés 90 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 31 mars 2014
30 janv. 2010 à 02:58
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
3
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
30 janv. 2010 à 17:03
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
3
barrimaamine Messages postés 6 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 9 avril 2011
31 janv. 2010 à 16:57
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
0
barrimaamine Messages postés 6 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 9 avril 2011
31 janv. 2010 à 17:23
christoni c parfait merci bcp :d
mé moi je veux travailé avec l'evenement TextChanged et ca marche pa
0
Rejoignez-nous