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

cs_benji78 41 Messages postés lundi 19 décembre 2005Date d'inscription 25 novembre 2008 Dernière intervention - 2 juil. 2008 à 15:09 - Dernière réponse : cs_benji78 41 Messages postés lundi 19 décembre 2005Date d'inscription 25 novembre 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 2 juil. 2008 à 21:25
3
Merci
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

Merci gillardg 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de gillardg
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 2 juil. 2008 à 15:35
0
Merci
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)
Commenter la réponse de cs_Jack
cs_benji78 41 Messages postés lundi 19 décembre 2005Date d'inscription 25 novembre 2008 Dernière intervention - 2 juil. 2008 à 16:13
0
Merci
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.
Commenter la réponse de cs_benji78
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 2 juil. 2008 à 18:06
0
Merci
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
Commenter la réponse de gillardg
cs_benji78 41 Messages postés lundi 19 décembre 2005Date d'inscription 25 novembre 2008 Dernière intervention - 2 juil. 2008 à 18:50
0
Merci
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
Commenter la réponse de cs_benji78
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 2 juil. 2008 à 19:16
0
Merci
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
Commenter la réponse de gillardg
cs_benji78 41 Messages postés lundi 19 décembre 2005Date d'inscription 25 novembre 2008 Dernière intervention - 2 juil. 2008 à 20:42
0
Merci
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 ?
Commenter la réponse de cs_benji78
cs_benji78 41 Messages postés lundi 19 décembre 2005Date d'inscription 25 novembre 2008 Dernière intervention - 2 juil. 2008 à 21:44
0
Merci
C'est nickel, un grand merci à toi pour avoir passé tout se temps à m'aider :).

a++

(Ps : Réponse acceptée)
Commenter la réponse de cs_benji78

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.