Passer valeur de la form 1 à la form 2 puis à la form 3 [Résolu]

ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 17 mars 2008 à 17:38 - Dernière réponse : taupe4 94 Messages postés dimanche 16 avril 2006Date d'inscription 17 avril 2008 Dernière intervention
- 17 avril 2008 à 00:39
Bonjour,

je débute en orienté objet.

Donc voilà, mon application est composé de trois form dans lequel l'utilisateur finale va remplir chacune de ces forms.

Dans ma form1, j'instancie la form2 en passant l'instance de la form1 pour récupérer un attribut de la form1 dans ma form2.
Ci-dessous le code pour montrer ca:

Form1 f1:

            _f2 = new formChoixTable(this);
            _f2.Show();

Question 1: dans ma form 2, je vais juste récupérer 1 seulattribut de ma form1, donc est-ce qu'il vaut mieux que j'utilise une classe statique ? Dans ce cas là, dans ma form1, je stocke la valeur dans cette class statique que je récupére dans form2 ce qui amène à stocker les valeurs de form2 également dans cette classes statiques pour les utiliser dans form3
J'ai lu la documentation msdn sur les classes statiques (http://msdn2.microsoft.com/en-us/library/79b3xss3(VS.80).aspx)  et il est dit: je cite:
Use a static class to contain methods that are not associated with a
particular object. For example, it is a common requirement to create a
set of methods that do not act on instance data and are not associated
to a specific object in your code. You could use a static class to hold
those methods.
Question 2: je ne comprends pas, pour moi une méthode est toujours associé à un objet alors dans quel cas on considère qu'une méthode ne l'ait pas ? Je dois avouer que même en regardant les exemples de la page, je ne vois pas la différence.

Merci d'avance.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
taupe4 94 Messages postés dimanche 16 avril 2006Date d'inscription 17 avril 2008 Dernière intervention - 18 mars 2008 à 12:21
3
Merci
Ce qui est mentionné sur MSDN, c'est que les classes statiques sont utilisés pour des variables ayant une portée globale et qu'elle n'affectent pas l'état d'un objet. Par exemple, une méthode qui créerait un tableau de données à partir d'un fichier. Cette méthode n'a pas besoin d'être dans un objet instancié, car elle ne dépend pas de l'objet. Par contre, le contenu d'un champ de texte, lui, est directement relié à l'objet, car il change selon l'état dudit objet. Si on aurait le contenu d'un champ de texte en statique, tous les champs de texte créé auraient le même texte.

En gros, static = 1 seule valeur dans tous les cas
variable d'instance = autant de valeurs que d'objets créés.

Mais je ne vois pas pourquoi l'autre méthode ne te convenait pas. Si tu veux, tu peux uniquement envoyer ledit paramètre dans ton constructeur de Form2. Par exemple:
public Form2(string nom)
{
}
Form2 form2 = new Form2(this.textBox1.Text);

Merci taupe4 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de taupe4
Meilleure réponse
taupe4 94 Messages postés dimanche 16 avril 2006Date d'inscription 17 avril 2008 Dernière intervention - 18 mars 2008 à 21:06
3
Merci
Dans la Form3, tu envoies un paramètre de type Form1 et un autre de type Form2.

Merci taupe4 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de taupe4
Meilleure réponse
taupe4 94 Messages postés dimanche 16 avril 2006Date d'inscription 17 avril 2008 Dernière intervention - 18 mars 2008 à 23:39
3
Merci
public Form3(Form1 etape1, Form2 etape2)
{

}

Dans form2 tu renvoies à Form3 la form1 que tu avais précédemment obtenue, en plus de this.

Merci taupe4 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de taupe4
Meilleure réponse
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 19 mars 2008 à 00:26
3
Merci
http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx














<hr />
-My Blog-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_Bidou
ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 18 mars 2008 à 15:08
0
Merci
Merci pour l'explication sur les classes/méthodes static. En gros, on utilises les méthodes static non pas pour stocker des valeurs mais juste créer des objets ou agir sur les objets comme formater une chaine de caractères.

En ce qui concerne le passage par paramètre. Le souci c'est que j'ai trois form.

dans ma form1, j'instancie form2 en passant l'instant de form1: donc j'accède aux attributs de form1 dans form 2.
_f2 = new formChoixTable(this);
            _f2.Show();.
ensuite pour aller dans form3, form2 crée une instance de form3 en passant une instance de form2.
_f3 = new formChoixImport(this);
            _f3.Show();

Au final, dans ma form3, j'accède que aux attributs de form2, pas de form1. Je vous montre comment j'accède à form2 dans ma form3.

formChoixTable = form 2
formChoixImport  = form 3

public partial class formChoixImport : Form
{
        private formChoixTable _f2;

        public formChoixImport()
        {
            InitializeComponent();
        }
        public formChoixImport(formChoixTable f2)
            : this()
        {
            _f2 = f2;
        }
       private void test_Click(object sender, EventArgs e)
        {
            _f2 = new formChoixTable();
            _f2.maMethode() //Ici j'ai accès que aux méthodes de form2
        }
}

Donc quel solution me proposez vous pour résoudre mon souci. (C'est la raison pour laquelle j'ai évoqué les classes static comme un moyen de stockage temporaire)

Merci
Commenter la réponse de ericdu93
ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 18 mars 2008 à 23:33
0
Merci
@taupe4, désolé, je ne comprends pas. Pourrai-tu fournir un exemple ? Merci.
Commenter la réponse de ericdu93
ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 18 mars 2008 à 23:44
0
Merci
ok ca fonctionne, merci taupe4.
Commenter la réponse de ericdu93
selemfss 1 Messages postés samedi 14 avril 2007Date d'inscription 15 avril 2008 Dernière intervention - 15 avril 2008 à 12:11
0
Merci
Bonjours, dans ce même cadre j'ai un petit probleme. Il est comme suit: j'ai une form1 depuis la quelle je lance une autre form2 et puis le probleme se pose au niveau de la passation de la valeur de la forme 2 à la forme 1 que je n'ai aps fermé
Commenter la réponse de selemfss
taupe4 94 Messages postés dimanche 16 avril 2006Date d'inscription 17 avril 2008 Dernière intervention - 17 avril 2008 à 00:39
0
Merci
Si tu suis la méthode qui est de passer une instance de Form1 à form2, tu as alors accès à toutes les méthodes publiques de Form1, tu peux donc les appeler.

Tu peux aussi créer des événements que tu lances lorsque de l'attention doit être apportée par les écouteurs.

Je te conseille de regarder la source citée plus haut, soit http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx, elle contient (à mon souvenir) un exemple avec des événements.
Commenter la réponse de taupe4

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.