Insérer une chaine de texte dans un RichTextBox

Owee Messages postés 5 Date d'inscription samedi 8 juillet 2006 Statut Membre Dernière intervention 17 juillet 2006 - 16 juil. 2006 à 15:57
Owee Messages postés 5 Date d'inscription samedi 8 juillet 2006 Statut Membre Dernière intervention 17 juillet 2006 - 17 juil. 2006 à 09:38
Comment faire pour insérer ue chaine de texte rapidement à chaque ligne d'un RichTextBox ?
J'ai mon RichTextBox. J'ai essayé :
For i = 0 To (RTB.Lines.Length - 1)
    RTB.Lines(i).Insert(0,"ma chaine à rajouter")
Next
... mais ca ne marche pas ! Auriez-vous une idée "rapide" ?

wee
A voir également:

9 réponses

cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
16 juil. 2006 à 18:35
RichTextBox.AppendText("MaChaine")

S'il sagit d'une nouvelle ligne :

RichTextBox.AppendText( VbCrLf & "MaChaine")
0
Owee Messages postés 5 Date d'inscription samedi 8 juillet 2006 Statut Membre Dernière intervention 17 juillet 2006
16 juil. 2006 à 20:35
AppendText me permet d'ajouter du texte à la fin.
Moi je souhaite ajouter du texte à chaque début de ligne
Par exemple :
Avant :
    Ligne1
    Ligne2
    Ligne3
Après :
    InsertionDeTexte Ligne1
    InsertionDeTexte Ligne2
    InsertionDeTexte Ligne3
C'est pour ça que j'ai essayé d'utiliser une boucle For sur Lines.

wee
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
16 juil. 2006 à 22:38
Voici une méthode peu efficace mais qui marche

'Pos le numero de la ligne (0 = insertion apres la 1er ligne, Chaine - la chaine à insérer)



Public



Function
InstertLine(

ByVal
Pos

As



Long
,

ByVal
Chaine

As



String


Dim
NewLine()

As



Long








Dim
ValStr

As



Long
= 1


Dim
Posi

As



Long
= 0


ReDim
NewLine(-1)ValStr = InStr(


CInt
(ValStr), f.Text, vbLf)


Do



While
ValStr <> 0


ReDim



Preserve
NewLine(Posi)NewLine(Posi) = ValStr + vbLf.Length

Posi += 1

ValStr = InStr(


CInt
(ValStr) + 1, f.Text, vbLf)


Loop

f.Text = f.Text.Insert(NewLine(Pos) - 1, Chaine & vbCrLf)







End



Function
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
16 juil. 2006 à 22:39
Voici une méthode peu efficace mais qui marche

'Pos le numero de la ligne (0 = insertion apres la 1er ligne, Chaine - la chaine à insérer)



Public



Function
InstertLine(

ByVal
Pos

As



Long
,

ByVal
Chaine

As



String


Dim
NewLine()

As



Long









Dim ValStr AsLong = 1



Dim Posi AsLong = 0



ReDim NewLine(-1)


ValStr = InStr(


CInt (ValStr), f.Text, vbLf)



Do
While ValStr <> 0



ReDim
Preserve NewLine(Posi)


NewLine(Posi) = ValStr + vbLf.Length


Posi += 1


ValStr = InStr(


CInt (ValStr) + 1, f.Text, vbLf)



Loop






f.Text = f.Text.Insert(NewLine(Pos) - 1, Chaine & vbCrLf)



End
Function
0

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

Posez votre question
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
16 juil. 2006 à 22:44
Avec un peu d'optimisation tu peux te débrouiller pour en insérer une chaine en toute premiere et en toute derniere ligne car le code ne permet que d'ajouter des lignes entre deux. De plus il n'y a pas de gestion d'erreurs, si le texte ne contient pas de lignes, une erreur est déclarée.

En esperant t'avoir pu t'aider.
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
16 juil. 2006 à 22:46
Pour insérer ta chaine avant il te suffit de faire

f.Text = f.Text.Insert(NewLine(Pos) - 1, Chaine)

au lieu de

f.Text = f.Text.Insert(NewLine(Pos) - 1, Chaine & vbCrLf)

Voila
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
16 juil. 2006 à 22:52
A mon avis il y a plus simple.
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
16 juil. 2006 à 23:03
Voici une autre métode plus efficace mais plus longue care elle recopie tout le Texte :

Dim ValStr
As
String

Dim Texte
As
String =
""

Dim LigneNum
AsLong 1  'Numéro de la ligne à insérerValStr f.Lines(LigneNum).Insert(0,

"bbb")

For u
As
Long = 0
To (f.Lines.LongLength - 1)

If u <> LigneNum
ThenTexte &= f.Lines(u) & vbCrLf

ElseTexte &= ValStr & vbCrLf

End
If

Next uf.Text = Texte
0
Owee Messages postés 5 Date d'inscription samedi 8 juillet 2006 Statut Membre Dernière intervention 17 juillet 2006
17 juil. 2006 à 09:38
Que de réponses ! Merci
Il faut que je regarde tout ça.
En fait, si tu veux, je dois résoudre un problème que j'ai eu pour un entretien d'embauche. On m'a dit de bien penser à mes classes.
Le problème est tout bête (normalement !).
--> Ouvrir des fichiers texte et pouvoir :
    --> Ajouter devant chaque ligne un index sur 5 caractères (du style 00001)
    --> Inverser les caractères : Cette partie là, je pense la faire StrReverse





wee
0
Rejoignez-nous