Pb enfant parent entre Form et Control

Morgan_2956 Messages postés 16 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 4 février 2010 - 18 avril 2009 à 12:02
Morgan_2956 Messages postés 16 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 4 février 2010 - 18 avril 2009 à 17:23
Bonjour,
J'ai un problème sur lequel je n'arrive pas à trouver de solution.
Voici les faits:
J'ai créer une classe avec dedans un arraylist. je remplis dynamiquement cette arraylist avec des controls (ils sont tous identiques) que j'ai créé. je les affiche sur la main Form.
Ensuite j'update les infos de chaque control, et la je n'arrive pas à lier le control qui est dans le arraylist et celui qui est affiché dans la main form.

dans ma main form:
Visu.MyControl SensorPanel1 = new Visu.MyControl();
panel1.Controls.Add(SensorPanel1);

Dans le classe arraylist:
public ArrayList SensorArray = new ArrayList();

Tjs dans la classe arraylist on ajoute un element à l'arraylist.
Visu.MyControl SensorPanel = new Visu.MyControl();
SensorArray.Add(SensorPanel);

ensuite sur interruption dans la main Form on change des infos dans les controls de l'arraylist:
// Recherche de la bonne class selon le numéro de l'interface capteur
foreach (Visu.MyControl b in SensorArray)
if (b.Interface == number)
{
//L'interface capteur est référencé dans la list
// Mise à jour des données capteurs
b.BDSDT(trameSensor);

Mais voila quand j'update b, le SensorPanel1 de la main Form n'affiche rien du tout.
Pourriez vous m'indiquer la manière pour faire cela?
D'avance merci.
A voir également:

3 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
18 avril 2009 à 12:24
Bonjour

les controles dans ta liste et ceux sur ta forme son differents, vu que tu utilises plusieurs fois l'opérateur new(...)

Essaye ça:

Visu.MyControl SensorPanel = new Visu.MyControl(); // creation du controle
SensorArray.Add(SensorPanel); //Ajout à la liste
panel1.Controls.Add(SensorPanel);  // affichage sur la forme.

Là il s'agira bie du même controle.

C# is amazing, enjoy it!
0
Morgan_2956 Messages postés 16 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 4 février 2010
18 avril 2009 à 15:41
Merci pour ta réponse.

J'ai fais comme tu m'as dit, ca a l'air d'être la bonne solution.
J'ai créer une classe dérivée d'arraylist pour modifier les données contenu dans SensorPanel. voici le code:

public Status UpgradeDataSensor(ref string trameSensor, int number, ref Visu.MyControl SensorPanel)
{
// ici plein de code
SensorPanel.texbox = "affichage de test";
}
mais malheureusement ça n'affiche pas!!
sais tu comment faire, j'imagine que je peux le faire directement dans la main Form, mais c'est plutôt sale!
0
Morgan_2956 Messages postés 16 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 4 février 2010
18 avril 2009 à 17:23
J'ai trouvé, il fallait que j'utilise une methode invoke pour accéder depuis mon event!
merci pour ton aide!
0
Rejoignez-nous