Richtextbox - coloration syntaxique

Résolu
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009 - 15 mai 2008 à 08:01
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012 - 23 nov. 2010 à 16:27
Bonjour tout le monde,


Je sollicite votre aide concernant l'utilisation de richtextbox. J'ai
fais une fonction qui doit changer la couleur d'une partie de mon texte
dans ma RTB :

ma fonction :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]-->PublicFunction changecouleur(ByVal rtb As RichTextBox, ByVal chaineatrouver AsString, ByVal Lcolor As System.Drawing.Color)
 
Dim longeurchaine AsInteger = Microsoft.VisualBasic.Len(chaineatrouver)
Dim debutchaine AsInteger = rtb.Find(chaineatrouver, RichTextBoxFinds.MatchCase)
'on fait un saut de ligne pour les prochaines lignes
rtb.Text = rtb.Text & vbCrLf
rtb.Focus()
'on selectionne la chaine a colorier
rtb.Select(debutchaine, longeurchaine)
rtb.SelectionColor = Lcolor
rtb.DeselectAll()
'on place le curseur a la fin
rtb.SelectionStart = rtb.Text.Length
 
EndFunction
 

<!-- END TEMPLATE: bbcode_code -->Jusque là ca va, quand je fais appel
a ma fonction ca marche j'ai mon texte en couleur, mais si j'appel a
nouveau ma fonction avec un nouveau texte, seul cette nouvelle chaine
est colorée. L'autre revient en noire.

Avez vous des idées sur le pourquoi du comment?

Merci d'avance.

 

10 réponses

kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009
15 mai 2008 à 16:44
Ca y est j'ai trouvé voici ma nouvelle fonction :

  

 
Public Function changecouleur(ByVal t As ArrayList, ByVal rtb As RichTextBox, ByVal chaineatrouver As String, ByVal Lcolor As System.Drawing.Color)
        Dim longeurchaine As Integer
        Dim debutchaine As Integer
        'on fait un saut de ligne pour les prochaines lignes
        rtb.Text = rtb.Text & vbCrLf
        Dim item As String
        t.Add(chaineatrouver) 'on ajoute la chaine dans le tableau
        'rtb.SelectedText = vbCrLf
        For Each item In t
            'MsgBox("item debut : " & item)
            longeurchaine = Microsoft.VisualBasic.Len(item)
            debutchaine = rtb.Find(item, RichTextBoxFinds.MatchCase)
            rtb.Select(debutchaine, longeurchaine)
            rtb.SelectionColor = Lcolor
            rtb.DeselectAll()
        Next
        'on place le curseur a la fin
        rtb.SelectionStart = rtb.Text.Length
        rtb.Focus()
    End Function

et j'ai créer un variable dans mon module :

Public arrayimg, arrayvideos As New ArrayList() 'declaration des array pour qu'il soit accessible a tous le programme

et j'appelle ma fonction comme ci :

changecouleur(array, rtb, strimg, Color.Orange)


 Merci a vous pour votre aide
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
15 mai 2008 à 09:04
Salut,


Regarde cette source si elle peut te venir en aide....


A+
Exploreur

 Linux a un noyau, Windows un pépin
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 mai 2008 à 09:14
a cause de rtb.Text = rtb.Text
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 mai 2008 à 09:15
faire :

rtb.SelText = vbCrLf

(propriété a adapter a .Net)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009
15 mai 2008 à 11:49
Je ne suis pas suis que cela soit du  au rtb.text=rtb.text & vbcrlf
car quand je le supprime c'est la meme chose
0
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009
15 mai 2008 à 11:51
Merci pour l'info, je suis en train de voir ca. J'ai sorti les paguai... c'est un autre niveau
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 mai 2008 à 11:52
depend du reste du code ton appli...

tu ne dois pas faire de RTB.Text =

sinon, le TextRTF est remis à 0
0
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009
15 mai 2008 à 13:07
ok je vais voir aussi de ca coté

 
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
15 mai 2008 à 23:48
Bonsoir,


Tu peux aussi t’essayer aux expressions régulières.


Ainsi ta <s>fonction</s> , Sub serait courte et rapide comme
suit :









   

Shared

Sub
changecouleur(ByVal rtb As RichTextBox, ByVal
chaineatrouver AsString,
ByVal Lcolor As
Color)








       
Dim reCherchText As
Regex = New Regex("[\s\r\n]*"
& chaineatrouver)






       
Dim mReCherchText As
Match = reCherchText.Match(rtb.Text)






       
Dim mcReCherchText As
MatchCollection = reCherchText.Matches(rtb.Text)






       
With rtb






           
For
Each
mReCherchText In mcReCherchText






                .Select(mReCherchText.Index,
mReCherchText.Length)






               

.SelectionColor
= Lcolor






           
Next







       
End
With







   
End
Sub
















Sans oublier d’importer l’espace
de nom : 





Imports

System.Text.RegularExpressions













« reCherchText »
est la chaîne à coloriser, on y ajoute un ou plusieurs





espaces,
retours chariot ou nouvelles lignes qui peuvent exister dans





ton
expression à rechercher.





« Match »
est la recherche cas par cas dans le texte.





« MatchColletion »
regroupe l’ensemble des occurances trouvées.






 
 







Enfin la boucle parcourre ces
occurances et les met en couleur.






 






Bonne continuation.
0
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
23 nov. 2010 à 16:27
Bonsoir,

J'ai testé ce bout de code et, lorsque l'on fait un del, enter, fleche... du clavier, ou lorsque l'on click au milieu du texte pour le modifier, le curseur est figé. y'a t'il une solution ?

Merci
Bonne soirée
0
Rejoignez-nous