Vince62290
Messages postés18Date d'inscriptionvendredi 19 décembre 2008StatutMembreDernière intervention25 décembre 2010
-
22 sept. 2009 à 19:12
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
24 sept. 2009 à 21:40
Bonsoir, dans le cadre d'un projet je me retrouve face à un problème que je n'arrive pas à résoudre et votre aide me serait d'une grande utilité car je tourne vraiment en rond cette fois-ci.
Objectif : parcourir une arraylist à l'aide d'une boucle "pour" et pour chaque objet de la collection, l'afficher dans le contrôle correspondant.
A note que mon problème d'actualisation vient du fait que c'est toujours le meme textbox qui est sollicité .
En résumé si tout se passait bien, la valeur dans mon controle changerait au fur et a mesure que l'on avance dans la collection.
Le plus "marrant" : dans cette meme boucle for, j'arrive à obtenir ce que je veux mais en faisant des messagebox et non pas en renvoyant la valeur dans le contrôle. De plus quand je débogge, l'indice s'incrémente convenablement et la valeur qui doit apparaitre dans la textbox change a chaque nouvel objet de la collection sollicité. Ce qui me perturbe encore plus. Enfin j'ai testé avec un refresh mais rien n'y fait.
Mon code :
//gga est mon arraylist de trame GGa provenant d'un fichier texte
for (int i = 0; i < gga.Count; i++)
{
//le messagebox marche
//MessageBox.Show(gga[i].ToString());
//ça coince ci-dessous (toujours le meme enregistrement dans le contrôle)
txtgga.Text = gga[i].ToString();
}
MasterShadows
Messages postés268Date d'inscriptionlundi 1 mars 2004StatutMembreDernière intervention19 avril 201212 23 sept. 2009 à 13:34
Je sais où il y'a une coquille :
nous n'avons pas tout ton code, mais il y'a fort à parier que tu gère la boucle for en une passe (sans multithread et tout), alors pour palier à ce problème, tu intègres un timer à ton formulaire, dans les propriétés, tu passes la propriété 'Enabled' à true et tu mets la propriété 'Interval' à 250 (par exemple), puis dans les events tu lève l'évènement Tick et tu remplis la méthode du tick comme cela :
Vince62290
Messages postés18Date d'inscriptionvendredi 19 décembre 2008StatutMembreDernière intervention25 décembre 2010 23 sept. 2009 à 11:55
Et bien j'ai toujours le même résultat MasterShadows, toujours le même enregistrement dans mon TextBox. Poour tant ton code marche, car testé sur les message box, on voit un certain laps de temps avant que la prochaine boite de dialogue s'affiche (au passage, pour ceux qu'il veulent l'utiliser ne pas oublie le using System.threading;).
J'espère voir ce problème réglé car mon but est de recevoir à l'avenir des trames GPS par le port série et afficher les différentes informations décodés à partir des trames (heure, latitude, longitude,etc) dans plusieurs contrôles (textbox).
Vince62290
Messages postés18Date d'inscriptionvendredi 19 décembre 2008StatutMembreDernière intervention25 décembre 2010 23 sept. 2009 à 22:33
Merci Master Shadows mais ça ne marche toujours pas. Il me met que l'index est hors limites...
Je t'explique mon code dans les grandes lignes :
*1* Dans le code associé au chargement de ma feuille, je parcours un fichier texte et pour chaque ligne (condition SI dans la boulche wuile qui parcourt le fichier), si la ligne commence par "$GPCGGA" alors je l'ajoute dans mon arraylist GGA.
*2* toujours dans la même procédure évènementielle, je lance mon timer après la boucle.
*3* J'ai écris ce que tu m'a donné en code dans l'évènement Tick sans oublier d'initialiser ma variable locale. Bien sur je n'ai appliqué nulle part la méthode Stop puisque c'est une actualisation.
*4* erreur généré dans l'évènement tick sur la ligne ""txtgga.Text = gga[count].ToString();"", index hors limite, pourtant lorsque je débogge avec point d'arrêt mon arraylist est bien remplie et la variable count s'incrémente bien.
Vince62290
Messages postés18Date d'inscriptionvendredi 19 décembre 2008StatutMembreDernière intervention25 décembre 2010 23 sept. 2009 à 22:39
AUTANT POUR MOI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Excuse moi j'ai écris trop vite, j'avais remplacer mon fichier texte entre temps par un autre ne contenant qu'une seule ligne $GPCGGA........... pour tester quelque chose.
Me reste plus qu'a régler le temps qu'un enregistrement reste affiché et c'est bon.
Un grand merci à toi Master Shadows, et une réponse acceptée de plus pour toi