cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 novembre 2008
-
2 juil. 2008 à 15:09
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 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.
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 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
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 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 ?