Partage
  • Partager sur Facebook
  • Partager sur Twitter

C# / WinForms - Passage d'un Chart en paramètre

Sujet résolu
    13 août 2018 à 15:38:10

    Bonjour à tous,

    J'ai un léger problème lors de la création d'un graphique sur une Form, je m'explique :

    Je récupère une liste de valeurs d'un fichier texte et j'arrive à insérer toutes les valeurs dans une listView. Ensuite Pour chaque élément de la liste, j'aimerai créer un graphique dans une nouvelle Form.

    Et c'est là qu'est le problème. Bien qu'en mettant mon Chart en paramètre lors de l'appel de la form2, je n'arrive pas à l'afficher sur cette nouvelle form. C'est comme si les données qu'étaient dans mon chart1 n'étaient plus présentes. J'ai donc fait plusieurs points d'arrêts pour voir si les valeurs sont encore présentes et elles le sont.

    Je viens alors vers vous pour mon problème qui n'est rien de plus qu'un passage par paramètre qui déconne.

    J'ai donc créé un exemple pour vous montrer plus spécifiquement ce qui ne marche pas dans mon code.

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                chart1Form1.Series.Clear();
    Series donnees = new Series(); double x = 2; donnees.Points.AddXY(1, x); donnees.Points.AddXY(2, 2*x); donnees.Points.AddXY(3, 3*x); donnees.ChartType = SeriesChartType.Spline; chart1Form1.Series.Add(donnees);
    Form2 f2 = new Form2(chart1Form1);
    f2.Show(); } }
    public partial class Form2 : Form
        {
            public Form2(Chart chart1Form1)
            {
                InitializeComponent();
                chart1Form2 = chart1Form1;
            }
            
        }


    Donc chart1Form1 s'affiche avec les données mais chart1Form2 est totalement vide.

    Si vous savez ce que j'ai fait de mal ou une éventuelle piste pour que je découvre la solution, je vous remercie d'avance.

    Ptitpege

    • Partager sur Facebook
    • Partager sur Twitter
      13 août 2018 à 18:31:37

      Chart est un contrôle.

      C'est un type référence, contrairement aux types valeurs comme "int", quand on le passe en paramètre d'une méthode, c'est la référence "constante" qui est passée, pas une copie (contrairement au C++).

      Quand vous utilisez le Designer graphique, en Winform, les contrôles sont créés et configurés pour être utilisable dans le formulaire.

      En passant en paramètre un contrôle configuré pour travailler dans un formulaire et tenter de l'afficher dans un autre formulaire, c'est vraiment chercher les problèmes.

      L'approche "normale", c'est de découper l'application en couche, avec la partie données et affichage des données bien séparées.

      Les données affichées par vos "Chart" ne devrait pas être inclus dans vos formulaires mais vos formulaires devraient s'adresser à la couche "métier" pour savoir quoi afficher.

      Dans votre cas, vous devriez donner à votre Form2 une référence à votre couche métier et pas à un contrôle qui est configuré pour fonctionner dans un autre formulaire.

      Vous pouvez, à la rigueur, passer directement les données à afficher à votre Form2, dans un DataSet par exemple, mais dans un contrôle qui n'est facilement affichable que dans le Form1 d'origine, non.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        13 août 2018 à 19:30:11

        Bonjour bacelar et merci de ta réponse.

        Je vais me renseigner sur les différentes couches des applications mais au moins maintenant je sais que c'était impossible à faire.

        Et vu que j'ai toutes mes données dans une listView, j'ai au final passé en paramètre un string[] avec mes données à l'intérieur.

        Ces données sont transmises en points directement de la form2 et maintenant ça marche niquel.

        Merci de votre aide et bonne journée.

        Ptitpege

        • Partager sur Facebook
        • Partager sur Twitter

        C# / WinForms - Passage d'un Chart en paramètre

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown