Récupérer le contenu d'un RichTextBox dans un ListBox

Résolu
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008 - 2 juil. 2008 à 15:09
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008 - 2 juil. 2008 à 21:44
Bonjour à tous, voici le problème que j'ai, et que j'aimerais résoudre avec votre aide :

J'ai créer une application qui lorsque l'utilisateur coche un CheckBox mon ListBox est automatiquement remplacé par un RichTextBox, où l'utilisateur peut entrer du texte manuellement.
J'ai réussis à créer cette première partie, mais le problème que j'ai est sur la suivante;

J'aimerais que lorsque l'utilisateur coche mon CheckBox chacun des items qui sont dans la collection du ListBox soit dans mon RichTextBox

Donc si j'ai comme items :
Toto
Salut
C'est deux items se retrouve dans mon RichTextBox avec un retour à la ligne entre les items.

Et j'aimerais que la procédure inverse se fasse elle aussi, donc que chaque ligne de mon RichTextBox se retrouve dans un item de ma ListBox.

J'espère que vous comprenez mon problème, je peux reformuler si nécessaire :).
Merci d'avance pour votre aide

8 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
2 juil. 2008 à 21:25
Sub

listbox2Richtextbox()RichTextBox1.Text =



String

.Empty



For

x = 0


To

ListBox1.Items.Count - 1RichTextBox1.AppendText(ListBox1.Items.Item(x) & Environment.NewLine)



Next

x



End





Sub








Sub

richtextbox2listbox()



Dim

fil


As





String

= Application.StartupPath &


"\temp.txt"








My

.Computer.FileSystem.WriteAllText(fil, RichTextBox1.Text,


False

)ListBox1.Items.Clear()



Dim

line


As





String








Using

sr


As





New

IO.StreamReader(fil)



Try








Do


line = sr.ReadLine()


ListBox1.Items.Add(line)








Loop





Until

line


Is





Nothing








Catch

ex


As

Exception



End





Try








End





Using








End





Sub
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 juil. 2008 à 15:35
Salut
Pour transférer le contenu d'une ListBox vers une RichTextBox, il te suffit d'énumérer les items de la ListBox.
Je te donne un exemple en VB6 (.Net ayant surement quelques subtilités d'appellation que je ne maitrise pas de mémoire)
   Dim r As Long
   For r = 1 To maListBox.ListCount
      maRichTextBox.Text = maRichTextBox.Text & maListBox.List(r) & vbCrLf
   Next r

Pour ramener les lignes de ta RTB vers ta ListBox, suffit de découper le texte en ligne en utilisant le vbCrLf comme séparateur
   Dim monTableau() As String
   Dim r As Long
   monTableau = Split(maRichTextBox.Text, vbCrLf)
   maListBox.Clear
   For r = 0 To UBound(monTableau)
      maListBox.AddItem monTableau(r)
   Next r

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008
2 juil. 2008 à 16:13
Merci pour la réponse rapide, alors voici des news de ton code :
En Vb.Net:
 x.ListCount = x.Items.Count
par contre pour l'expression x.List je ne suis pas sûr, d'après la description de Visual Studio, j'ai opté pour x.Items.Item, mais c'est ne doit pas être cela, car la première partie de ton code donne une erreur lors de son execution :
"L'exception ArgumentOutOfRangeException n'a pas été gérée
InvalidArgument=La valeur '1' n'est pas valide pour 'index'.
Nom du paramètre : index"

Sinon pour la seconde partie, cela marche très bien à ceci près que si mon RichTextBox contient plusieurs lignes celles-ci sont regroupées dans un seul item lors du transfert.
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
2 juil. 2008 à 18:06
For

x = 0


To

50ListBox1.Items.Add(x)



Next

x



For

x = 0


To

ListBox1.Items.Count - 1RichTextBox1.AppendText(ListBox1.Items.Item(x) & Environment.NewLine)



Next

x
0

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

Posez votre question
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008
2 juil. 2008 à 18:50
Merci de ton aide Gillardg, le problème venait en effet du fait de ne pas avoir mis le -1 après ListBox1.Items.Count.

Donc le passage des membres de la ListBox vers le RichTextBox fonctionne bien, mais il y a toujours un problème dans la seconde partie du code, où à chaque touche "espace" préssé, par exemple :
Salut c'est moi
donnera dans la ListBox
Salut
c'est
moi

Et si j'ai par exemple
Salut c'est moi
Coucou

Cela donne dans la ListBox
Salut
c'est
moi[]Coucou
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
2 juil. 2008 à 19:16
Dim

fil


As





String

= Application.StartupPath &


"\temp.txt"








For

x = 0


To

50ListBox1.Items.Add(x)



Next

x



For

x = 0


To

ListBox1.Items.Count - 1RichTextBox1.AppendText(ListBox1.Items.Item(x) & Environment.NewLine)



Next

x



My

.Computer.FileSystem.WriteAllText(fil, RichTextBox1.Text,


False

)



Dim

line


As





String








Using

sr


As





New

IO.StreamReader(fil)



Try








Do


line = sr.ReadLine()


ListBox2.Items.Add(line)








Loop





Until

line


Is





Nothing








Catch

ex


As

Exception



End





Try 










End





Using
0
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008
2 juil. 2008 à 20:42
C'est presque ça, merci encore de ton aide

La dernière chose qui pose problème c'est que le contenu du RichTextBox double à chaque fois :
J'entre dans mon ListBox :
Salut
C'est moi

puis lors du premier passage du LB vers le RTB, tout va bien, donc je reviens vers mon LB après avoir fais se que je voulais dans mon RTB.
Mais si je repasse ensuite du LB vers le RTB; le contenu du RTB utilise deux fois se qu'il y a dans la Lb, car si j'ai bien compris le fonctionnement de ton code :
Les lignes du RTB sont enregistrées dans le fichier temp.txt
Et lorsqu'on passe du LB vers le RTB on utilise se qu'il y a dans le fichier temp.txt et se qu'il y a dans le LB 

Je pense qu'il faudrait peut-être effacer le contenu de ce fichier temporaire lors du passage du LB vers le RTB, non ?
Mais je ne sais pas trop comment procéder, peux-tu m'expliquer ?
0
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008
2 juil. 2008 à 21:44
C'est nickel, un grand merci à toi pour avoir passé tout se temps à m'aider :).

a++

(Ps : Réponse acceptée)
0
Rejoignez-nous