Ok, j'ai regardé ton projet. C'est beaucoup mieux ! On y voit quelque chose ce coup-ci.
C'est toujours normal que ça ne fonctionne pas mais tu touches le bon bout.
Il y a un truc qui ressort dans ton code c'est l'utilisation des instances de classe qui te perturbe un peu manifestement. Par exemple tu utilises une instance de la classe _6dof pour calculer tes points et les insérer dans ton datagrid de home ... Et comme pour afficher ces points dans Chart tu as besoins de cet objet, tu en crées une nouvelle instance. Donc tu as deux instances d'une même classe chacune avec ses propriétés propres.
Pareil pour le Chart. Tu as besoin d'utiliser ce UserControl à 2 endroits dans ton code donc tu crées deux instances... 
La question que tu dois te poser est : Qui à besoin de ces deux objets (instances de classe), Qui crées ces instances.
Réponse :
- Qui a besoin d'une instance de _6dof (personne car cette classe est assez mal foutue): dans ton projet c'est Chart et Home
- Qui connait à la fois Chart et Home : Form1 car Form1 a un bouton pour afficher Chart et un bouton pour afficher Home.
Donc Form1 peut créer une instance de _6dof et la transmettre à Chart et Home ! Donc Home n'a pas à connaitre Chart. C'est Form1 qui transmettra la donnée aux deux composants et donc en toute logique devra avoir le timer.
C'est la même chose pour Chart. Ce n'est pas parce que tu ne l'affiches pas qu'il ne doit pas prendre en compte les points. Or ici tu crée une instance de Chart dans Home et une dans Form1.
Ensuite Home transmet à son chart le point mais c'est le Chart de Form1 qui est affiché....
Ce que tu peux faire c'est conserver quelque part une liste de points à afficher et transmettre cette liste à Chart au moment de son affichage.
Pour résumer :
Dans ton projet on a :
Form1=> Home
=> _6dof objsexdof
=> Chart1 objchart
=> Timer
=> Chart1.chart1
=> _6dof objsexdof2
Ce que je te conseille (pour ne pas casser tout ton code)
Form1
=> Home
=> Chart1
=> _6Dof
=> Timer
Donc :
- La classe _6dof : Tu la renommes en autre chose car son nom ne veut rien dire. Elle servira à stocker les points (elle comportera une liste de point) et tu supprimes la méthode FillMainTable(...) de cette classe, elle doit être dans Home. 6Dof ne connait pas Home !! Elle peut avoir une méthode qui calcule les points (ou les récupère) et les retourne et un moyen pour stocker ses points (Liste<>)
- La Class Home : Implémente FillMainTable(...) et reçoit toutes les secondes le nouveau point à ajouter dans son tableau
- La Classe chart : C'est pareil que Home mais au lieu d'afficher sous forme de table elle affiche sous forme de graphique. Mais leur fonction est similaire (2 usercontrols qui affichent les mêmes données sous deux formes différentes)
- La Classe Form1 qui manage tout ça : Création des UserControl, de l'instance de la classe 6Dof qui calcule les points et les stockes, du Timer qui va intérroger la classe 6Dof pour obtenir un nouveau point et transmettre à Home et Chart les points à afficher.
Enfin dernière chose : Renomme tes classes car Form1 et _6Dof c'est franchement pas terrible ;-)
Ca peut te paraître compliqué à première vue mais c'est juste du déplacement d'un peu de code. Tout est là, il faut juste réorganiser un peu afin d'éviter de se perdre...
Désolé pour le roman mais avec ça je pense que tu devrais t'en sortir.
Bon courage tu y es presque !
Partager