Richtextbox - coloration syntaxique [Résolu]

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

10 réponses

Répondre au sujet
kciope 20 Messages postés vendredi 11 avril 2003Date d'inscription 7 août 2009 Dernière intervention - 15 mai 2008 à 16:44
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de kciope
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 15 mai 2008 à 09:04
0
Utile
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
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 mai 2008 à 09:14
0
Utile
a cause de rtb.Text = rtb.Text
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 mai 2008 à 09:15
0
Utile
faire :

rtb.SelText = vbCrLf

(propriété a adapter a .Net)
Commenter la réponse de Renfield
kciope 20 Messages postés vendredi 11 avril 2003Date d'inscription 7 août 2009 Dernière intervention - 15 mai 2008 à 11:49
0
Utile
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
kciope 20 Messages postés vendredi 11 avril 2003Date d'inscription 7 août 2009 Dernière intervention - 15 mai 2008 à 11:51
0
Utile
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
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 mai 2008 à 11:52
0
Utile
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
kciope 20 Messages postés vendredi 11 avril 2003Date d'inscription 7 août 2009 Dernière intervention - 15 mai 2008 à 13:07
0
Utile
ok je vais voir aussi de ca coté

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