Bonjour à toutes et tous, voici mon problème:

Dans un winForm j'ai un TabControl de 5 pages où chaque onglet contient deux instances d'un CustomControl (qui contient lui 20 NumericUpDown) et un Chart.
Le but est de lier les NumericUpDown au Chart....

Pour ne pas lier "à la main" les NumericUpDown (5 onglets x 2 instances x 44NumUD = 440 liens :/) j'utilise une routine qui cherche les NumericUpDown dans mon winForm et les lie à différentes DataTables dans un DataSet:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
        private void FncRootLiaisonsBdd()
        {
            // laison des controles loiRaideur
            foreach (loiRaideur elementLoiRaideur in GetLoiRaideur(tabControlConfig))
            {
                BindingSource _bSourceLoi = new BindingSource();
                dSetGraphKxBase _dsGraphKx = new dSetGraphKxBase();
 
                if (elementLoiRaideur.Name.Contains("K1XC") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK1XC"); }
                if (elementLoiRaideur.Name.Contains("K1XD") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK1XD"); }
                if (elementLoiRaideur.Name.Contains("K2XC") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK2XC"); }
                if (elementLoiRaideur.Name.Contains("K2XD") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK2XD"); }
                if (elementLoiRaideur.Name.Contains("K3XC") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK3XC"); }
                if (elementLoiRaideur.Name.Contains("K3XD") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK3XD"); }
                if (elementLoiRaideur.Name.Contains("K4XC") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK4XC"); }
                if (elementLoiRaideur.Name.Contains("K4XD") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK4XD"); }
                if (elementLoiRaideur.Name.Contains("K5XC") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK5XC"); }
                if (elementLoiRaideur.Name.Contains("K5XD") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableK5XD"); }
                if (elementLoiRaideur.Name.Contains("KPitch") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableKPitch"); }
                if (elementLoiRaideur.Name.Contains("KPulse") == true) { _bSourceLoi = new BindingSource(dSetKxAsmTmp, "dTableKPulse"); }
 
                FncSubLiaisonsBdd_Loi(elementLoiRaideur, _bSourceLoi);
                FncSubLiaisonsBdd_Graph(elementLoiRaideur, _bSourceLoi, _dsGraphKx);
 
            }
}
et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        private void FncSubLiaisonsBdd_Loi(loiRaideur _loi, BindingSource _bSourceLoi)
        {
            // création de la liste des controles NumericUpDown
            var listeNumUD = new List<NumericUpDown> { };
            foreach (NumericUpDown _n in GetNumUDs(_loi))
            { listeNumUD.Add(_n); }
 
            // liaison des controles NumericUpDown
            for (int i = 0; i < listeNumUD.Count; i++)
            {
                try
                {
                    DataTable _dt = dSetKxAsmTmp.Tables[_bSourceLoi.DataMember];
                    _dt.Columns.Add(new DataColumn(listeNumUD[i].Name, listeNumUD[i].Value.GetType()));
                    _dt.Rows[0][listeNumUD[i].Name] = listeNumUD[i].Value;
                    listeNumUD[i].DataBindings.Add(new Binding("Value", _dt, listeNumUD[i].Name, false, DataSourceUpdateMode.OnPropertyChanged));
                }
                catch (Exception e) { MessageBox.Show(e.ToString()); }
            }
        }
Ca marche très bien en me créant à chaque fois une colonne du nom du controle NumericUpDown dans la DataTable souhaitée et la valeur du NuméricUpDown dans la première ligne.
Lorsque je change la valeur d'un NumericUpdown, la nouvelle valeur est bien repercutée en automatique dans la DataTable correspondante.

Maintenant je voudrais utiliser ces données "en vrac" pour créer les Serie de mon Chart
Pour ce faire, je créé un nouveau DataSet avec de nouvelles DataTables ayant pour colonnes les X et les Y d'une serie et je créé les Series du Chart à partir de ces données

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 
        private void FncSubLiaisonsBdd_Graph(loiRaideur _loi, BindingSource _bSourceLoi, ref dSetGraphKxBase _dsGraphKx)
        {
            // création de la liste des controles NumericUpDown
            var listeNumUD = new List<NumericUpDown> { };
            foreach (NumericUpDown _n in GetNumUDs(_loi))
            { listeNumUD.Add(_n); }
 
            // liaison aux dTableGraph
            foreach (DataTable _dt in _dsGraphKx.Tables)
            {
                _dt.Columns.Add(new DataColumn("X"));
                _dt.Columns.Add(new DataColumn("Y"));
 
                for (int i = 1; i <= 6; i++)
                {
                    DataRow _row = _dt.NewRow();
                    _dt.Rows.Add(_row);
                }
            }
 
            for (int i = 0; i < listeNumUD.Count; i++)
            {
                try
                {
                    if (_loi.Name.Contains("XC") is true)
                    {
                        string _stringNameXY = listeNumUD[i].Name.Substring(5, 4);
                        if (_stringNameXY.Contains("Xmoy"))
                        {
                            string _point = listeNumUD[i].Name.Substring(listeNumUD[i].Name.Length - 1);
                            _dsGraphKx.Tables["dTableGraphXC"].Rows[Convert.ToInt16(_point) - 1]["X"] = new Binding("Value", dSetKxAsmTmp.Tables[_bSourceLoi.DataMember], listeNumUD[i].Name, false, DataSourceUpdateMode.OnPropertyChanged);
                        }
                        else if (_stringNameXY.Contains("Ymoy"))
                        {
                            string _point = listeNumUD[i].Name.Substring(listeNumUD[i].Name.Length - 1);
                            _dsGraphKx.Tables["dTableGraphXC"].Rows[Convert.ToInt16(_point) - 1]["Y"] = new Binding("Value", dSetKxAsmTmp.Tables[_bSourceLoi.DataMember], listeNumUD[i].Name, false, DataSourceUpdateMode.OnPropertyChanged);
 
                        }
                        else { }
                    }
                }
                catch (Exception e) { MessageBox.Show(e.ToString()); }
            }
 
 
            foreach (Chart _chart in GetCharts(tabControlConfig))
            {
                try
                {
                    string s = _bSourceLoi.DataMember.ToString().Substring(6, 2);
                    if (_chart.Name.Contains(s))
                    {
                        _chart.DataSource = _dsGraphKx;
                        Series _serieCharge = new Series();
                        _chart.Series.Add(new Series());
                        _chart.Series[0].ChartType = SeriesChartType.Line;
                        _chart.Series[0].Points.DataBindXY(_dsGraphKx.Tables["dTableGraphXC"].Rows, "X", _dsGraphKx.Tables["dTableGraphXC"].Rows, "Y");
                        Series _serieDecharge = new Series();
                        _chart.Series.Add(new Series());
                        _chart.Series[1].ChartType = SeriesChartType.Line;
                        _chart.Series[1].Points.DataBindXY(_dsGraphKx.Tables["dTableGraphXD"].Rows, "X", _dsGraphKx.Tables["dTableGraphXD"].Rows, "Y");
                        _chart.DataBind();
                    }
                    else { }
                }
                catch (Exception e) { MessageBox.Show(e.ToString()); }
 
            }
 
        }
Le problème c'est que quand je change les valeurs de mes NumericUpDown, ça ne change pas mon Chart et pourtant ça se compile et se lance sans erreur....

Je pense que le probleme vient de la definition de mes liaisons entre le premier DataSet et le second puis le Chart mais je n'arrive pas comprendre mon (mes) erreur(s)....

Merci d'avance à ceux qui peuvent m'aider ;p