Questions à propos de passage de tableaux entre 2 forms [Résolu]

Signaler
Messages postés
41
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
15 septembre 2008
-
Messages postés
41
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
15 septembre 2008
-
Bonsoir,

D'abord : XP SP1, Framework .Net 1.1, IDE SharpDevelop 1.1

Après : mon  soucis du moment vient du passage de tableau entre 2 forms. Pour cela j'utilise une propriétés dans chaque form pour les transmettre

Dans Form1 j'ai :
            public float[,] TabDonnéesFinale {
                get {
                    return fTabDonnéesFinale;
                }
                set {
                    fTabDonnéesFinale = value;
                }
            }

et dans Form2 j'ai :
        public float[,] TableauValeurs {
            get {
                return fTableauValeurs;
            }
            set {
                fTableauValeurs = value;
            }
        }

Je souhaite passer dans un premier temps le tableau fTabDonnéesFinale dans la form2 à fTableauValeurs.
Pour cela je fais dans Form1 : Form2.TableauValeurs = fTabDonnéesFinale

Puis si les modifs sont acceptées dans Form2, passer fTabValeurs dans Form1 en faisant (Dans Form2) TabDonnéesFinale = fTableauValeurs
Si les modifs ne sont pas acceptées je veux garder dans Form1 le tableau fDonnéesFinales tel qu'il était avant le passage à Form2.

Et c'est là qu'est mon soucis, car si je n'accepte pas les modifs, le tableau fDonnéesFinales dans Form1 après avoir fait des modifs sans les acceptées ressemble à fTableauValeurs de la form2.

Il doit y avoir là dessous une histoire de reférence qui traine, peut être dans mes propriétés mais j'en suis pas sur.

Si vous avez des solutions : MERCI

RB

3 réponses

Messages postés
41
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
15 septembre 2008

J'ai trouvé une solution en espérant qu'elle ne soit pas trop mauvaise :
Mes propriétés deviennent :
* Dans Form1
            public float[,] TabDonnéesFinale {
                get {
                    return fTabDonnéesFinale;
                }
                set {
                    this.fTabDonnéesFinale = new float[value.GetUpperBound(0)+1,value.GetUpperBound(1)+1];
                    Array.Copy(value,fTabDonnéesFinale,(value.GetUpperBound(0)+1)*(value.GetUpperBound(1)+1));
                }
            }

et dans Form2 j'ai :
        public float[,] TableauValeurs {
            get {
                return fTableauValeurs;
            }
            set {
                    this.fTableauValeurs= new float[value.GetUpperBound(0)+1,value.GetUpperBound(1)+1];
                    Array.Copy(value,fTableauValeurs,(value.GetUpperBound(0)+1)*(value.GetUpperBound(1)+1));
            }
        }
Messages postés
303
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
24 avril 2009
5
Quand tu souhaite faire une copie de ton Array, et non un simple passage par référence, il faut faire ainsi par exemple

int[] tab1 =
new
int[] { 1, 2, 3 };

int[] tab2 =
new
int[0];
tab2 =
new
int[tab1.Length];
tab1.CopyTo( tab2, 0 );

Eric
Messages postés
41
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
15 septembre 2008

Merci Eric,

mais je crois bien que CopyTo ne s'applique qu'a des tableaux à 1 dimension. moi j'ai des tableaux à 2 dimensions!!

j'avais bien pensé à ça mais les problèmes de dimensions m'ont tout de suite stoppé.

RB