Richtextbox - coloration syntaxique [Résolu]

Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
7 août 2009
- - Dernière réponse : cs_ABF
Messages postés
228
Date d'inscription
samedi 21 mai 2005
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.

 
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
7 août 2009
3
Merci
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

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 kciope
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
0
Merci
Salut,


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


A+
Exploreur

 Linux a un noyau, Windows un pépin
Commenter la réponse de cs_Exploreur
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
a cause de rtb.Text = rtb.Text
Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
faire :

rtb.SelText = vbCrLf

(propriété a adapter a .Net)
Commenter la réponse de Renfield
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
7 août 2009
0
Merci
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
Commenter la réponse de kciope
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
7 août 2009
0
Merci
Merci pour l'info, je suis en train de voir ca. J'ai sorti les paguai... c'est un autre niveau
Commenter la réponse de kciope
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
depend du reste du code ton appli...

tu ne dois pas faire de RTB.Text =

sinon, le TextRTF est remis à 0
Commenter la réponse de Renfield
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
7 août 2009
0
Merci
ok je vais voir aussi de ca coté

 
Commenter la réponse de kciope
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Dernière intervention
1 novembre 2010
0
Merci
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.
Commenter la réponse de cs_christoni
Messages postés
228
Date d'inscription
samedi 21 mai 2005
Dernière intervention
26 avril 2012
0
Merci
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
Commenter la réponse de cs_ABF

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.