Problème de code ?

Résolu
steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009 - 2 juin 2009 à 16:07
steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009 - 3 juin 2009 à 10:03
Voilà mon code (programme refreshListview)




Dim monStreamReader As New StreamReader(Application.StartupPath + "\journaux.txt")
                                            Dim ligne As String
                                            Dim cases(4)
                                            Dim liste As ListView = mainForm.ListView

                                            For i = 0 To liste.Items.Count - 1
                                                liste.Items(i).Remove()
                                            Next

                                            Do
                                                ligne = monStreamReader.ReadLine

                                                If Not ligne = "" Then
                                                    cases = ligne.Split(","c)

                                                    Dim list As New ListViewItem

                                                    list.Text = cases(0)               'première cellule
                                                    list.SubItems.Add(cases(1))        'seconde cellule
                                                    list.SubItems.Add(cases(2))        'troisieme cellule
                                                    list.SubItems.Add(cases(3))        'quatrieme cellule
                                                    If list.SubItems(3).Text = "ECHEC" Then
                                                        mainForm.NotifyIcon.ShowBalloonTip(1)
                                                        mainForm.NotifyIcon.Icon = My.Resources.mort1
                                                        list.ForeColor = Color.Red
                                                    End If
                                                    list.SubItems.Add(cases(4))        'cinquieme cellule
                                                    liste.Items.Add(list)              'ajout de la ligne
                                                End If
                                            Loop Until ligne Is Nothing
                                            monStreamReader.Close()





Normalement il marche très bien mais le problème c'est que quand j'appel le programme quand la form est cachée, j'ai une erreur qui me dit que la valeur "3" ne correspond pas à l'index.
Pouvez vous me dire pourquoi, je ne vois pas du tout par ce que quand je rafraichis la listview, je supprime les items et je les recréer.

5 réponses

steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009
2 juin 2009 à 16:55
Bon j'ai résolu le problème.

Je ne sais pas pourquoi mais dans mon for je passais de item1 à item 3 puis item 5 du coup j'ai fait un compte à rebourds.

for i = liste.items.count - 1 to 0 step -1
liste.items(i).remove()
next i

Et là ça marche les mysteres de l'informatique sont impénétrables mon fils.
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
2 juin 2009 à 17:06
lol!!!!
ce n'est pas un mystere de l'informatique
quand tu supprime un item  (exemple le 3) l'item suivant qui était donc le 4 devient le trois (du fait de la disparition de l'ex 3 ) et comme tu incrémente ta boucle tu passes au 4 qui est devenu entre temps le 5
il faut toujours partir du plus grand item quand tu fais ce genre de manip

de plus
pourquoi faire :
                                            For i = 0 To liste.Items.Count - 1
                                                liste.Items(i).Remove()
                                            Next
alors que :
                                                liste.Items(i).Clear
te fait la meme chose en une seule ligne  ?
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
3
steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009
2 juin 2009 à 16:11
Dsl je reprécise, la première fois que le code est utilisé, ma form est cachée (au démarrage de l'application) il marche très bien, en fait c'est que je me suis arrangé avec un timer qui rappel le programme toutes les minutes et c'est à ce moment que j'ai l'erreur.
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
2 juin 2009 à 17:07
oups !!! je suis allé trop vite
liste.Items.Clear

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0

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

Posez votre question
steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009
3 juin 2009 à 10:03
Ok c'est ce que je me suis dit après pour les items supprimés ^^
j'avais pas vu le .clear ^^ ca m'enleve 2 lignes de code, merci ^^
0
Rejoignez-nous