Ajouter ligne suivante ListBox1.Items( ??? ) à un RichTextBox

Résolu
cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
- 29 juin 2008 à 20:11
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

14 réponses

cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
29 juin 2008 à 20:26
    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 #   
3
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
29 juin 2008 à 20:25
salut,

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

donc I
non?
0
cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008

29 juin 2008 à 21:07
Apparement la méthode de Casy marche.

Nickel merci pour cette réponse rapide.
Bonne continuation.
0
cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008

29 juin 2008 à 21:11
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.
0

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

Posez votre question
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
29 juin 2008 à 21:14
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 #   
0
cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008

29 juin 2008 à 21:28
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")
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
29 juin 2008 à 21:33
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 #   
0
cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008

29 juin 2008 à 21:39
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 ?
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
29 juin 2008 à 21:46
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
0
cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008

29 juin 2008 à 21:48
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
0
gillardg
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
29 juin 2008 à 21:55
'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
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
29 juin 2008 à 22:02
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]

++
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
29 juin 2008 à 22:05
d'ailleurs c'est  If (i And 127) = 0 Then Application.DoEvents()
^^
0
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
Tout est nikel.
1000 merci.
Bonne continuation.

(PS: les ListBox sont limité en nombre de lignes, c'est dommage...)
0