Ajouter ligne suivante ListBox1.Items( ??? ) à un RichTextBox [Résolu]

Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
- - Dernière réponse : cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
- 29 juin 2008 à 22:25
Bonjour,
J'aimerais savoir comment faire pour créer une sorte de boucle qui prendrait la ligne 1 de mon ListBox1 et l'ajouterait à mon RichTextBox2, puis ferais de même avec la ligne 2 du ListBox1, puis la ligne 3, ...

Je suis partis avec une truc de ce style...

        RichTextBox1.Text &= ListBox1.Items( ??? )

Merci par avance aux réponses.
Bonne continuation.
Beny
Afficher la suite 

14 réponses

Meilleure réponse
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
3
Merci
    For i As Integer = 0 To ListBox1.Items.Count - 1
      RichTextBox1.Text &= ListBox1.Items(i) & Environment.NewLine
    Next

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #   

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28
0
Merci
salut,

beh comme tu l'écris toi même...., c'est une boucle.
donc de i 0 à N (dernier item)

donc I
non?
Commenter la réponse de PCPT
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
0
Merci
Apparement la méthode de Casy marche.

Nickel merci pour cette réponse rapide.
Bonne continuation.
Commenter la réponse de cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
0
Merci
Petite question.
Cette action se fait sur environ 3000 lignes de ListBox, il est for possible que le programme plante (ne réponde pas), est-il possible d'outrapasser cela ?
Merci.
Commenter la réponse de cs_kanabis
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
Un Application.DoEvents() dans la boucle devrait faire l'affaire.

3000 lignes ça devrait pas prendre plus de quelques secondes je pense.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
0
Merci
Le Application.DoEvents() doit être placé ou ?

For i As Integer = 0 To ListBox1.Items.Count - 1
      RichTextBox1.Text &= ListBox1.Items(i) & Environment.NewLine
Next
Application.DoEvents()
RichTextBox1.SaveFile("C:\Fichier.rtf")
Commenter la réponse de cs_kanabis
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
Dans la boucle, j'ai dit :

For i As Integer = 0 To ListBox1.Items.Count - 1
      RichTextBox1.Text &= ListBox1.Items(i) & Environment.NewLine
      Application.DoEvents()
Next

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
0
Merci
Ok parfait merci.
Ca fonctionne mais c'est assez long (plusieurs minutes).
Est-ce qu'a la fin, après avoir copier tout les listbox, il reviendra au début ou il s'arretera ?
Commenter la réponse de cs_kanabis
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28
0
Merci
RichTextBox1.visible = false

For i As Integer = 0 To ListBox1.Items.Count - 1
      RichTextBox1.Text &= ListBox1.Items(i) & Environment.NewLine
      if (i and 127) then Application.DoEvents()
Next i
RichTextBox1.visible = true
Commenter la réponse de PCPT
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
0
Merci
Ok, mais pourrai-je avoir une petite explication de ces commandes svp ?

RichTextBox1.visible = false
For i As Integer = 0 To ListBox1.Items.Count - 1
      RichTextBox1.Text &= ListBox1.Items(i) & Environment.NewLine
      if (i and 127) then Application.DoEvents()
Next i
RichTextBox1.visible = true
Commenter la réponse de cs_kanabis
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
0
Merci
'avec la méthode appendText ça va plus vite



For

i = 0


To

ListBox1.Items.Count - 1RichTextBox2.AppendText(ListBox1.Items(i) & Environment.NewLine)

'Application.DoEvents()



Next

i
Commenter la réponse de gillardg
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28
0
Merci
le fait de la rendre invisible pendant le traitement évite de dessiner la chaine, donc gain de temps.
quant au i and 127, on ne fait un DOEVENTS qu'une fois sur 128, ce qui est bien suffisant, et donc plus rapide

voir ce lien :
Q : [doc/faq.aspx#vb_doevents Code : Mon application freeze lors d'une
longue opération, comment y rémedier]

++
Commenter la réponse de PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28
0
Merci
d'ailleurs c'est  If (i And 127) = 0 Then Application.DoEvents()
^^
Commenter la réponse de PCPT
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
0
Merci
Tout est nikel.
1000 merci.
Bonne continuation.

(PS: les ListBox sont limité en nombre de lignes, c'est dommage...)
Commenter la réponse de cs_kanabis