steph064
Messages postés90Date d'inscriptionmardi 30 décembre 2008StatutMembreDernière intervention10 juin 2009
-
2 juin 2009 à 16:07
steph064
Messages postés90Date d'inscriptionmardi 30 décembre 2008StatutMembreDernière intervention10 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.
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 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
steph064
Messages postés90Date d'inscriptionmardi 30 décembre 2008StatutMembreDernière intervention10 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.