begin process at 2010 02 09 23:50:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

passer valeur de la form 1 à la form 2 puis à la form 3


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

passer valeur de la form 1 à la form 2 puis à la form 3

lundi 17 mars 2008 à 17:38:34 | passer valeur de la form 1 à la form 2 puis à la form 3

ericdu93

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.
mardi 18 mars 2008 à 12:21:10 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

taupe4

Réponse acceptée !
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);
mardi 18 mars 2008 à 15:08:52 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

ericdu93

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
mardi 18 mars 2008 à 21:06:46 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

taupe4

Réponse acceptée !
Dans la Form3, tu envoies un paramètre de type Form1 et un autre de type Form2.
mardi 18 mars 2008 à 23:33:23 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

ericdu93

@taupe4, désolé, je ne comprends pas. Pourrai-tu fournir un exemple ? Merci.
mardi 18 mars 2008 à 23:39:04 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

taupe4

Réponse acceptée !
public Form3(Form1 etape1, Form2 etape2)
{

}

Dans form2 tu renvoies à Form3 la form1 que tu avais précédemment obtenue, en plus de this.
mardi 18 mars 2008 à 23:44:48 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

ericdu93

ok ca fonctionne, merci taupe4.
mercredi 19 mars 2008 à 00:26:17 | Re : passer valeur de la form 1 à la form 2 puis à la form 3
mardi 15 avril 2008 à 12:11:32 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

selemfss

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é
jeudi 17 avril 2008 à 00:39:13 | Re : passer valeur de la form 1 à la form 2 puis à la form 3

taupe4

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.


Cette discussion est classée dans : form, valeur, form2, to, form1


Répondre à ce message

Sujets en rapport avec ce message

pb lors d'un transfert de variable entre 2 form [ par kakol ] Bonjour a tous,Voila j'ai 2 form, Form1 et Form2. Dans le Form1 j'ai un comboBox et je voudrais pouvoir me servir dans le Form2 de la valeur que je ch Problème de passage de variables entre form [ par JuGuuL ] Salut, C surement une question de newbies, C ce que je suis en C# J'ai 2 Form, Form1 et Form2 Au demarrage Form1 se met en transparent 0% et j'aff Form1 et form 2 [ par paloxicide ] comment récupérer la valeur de mon textbox du formulaire précédent sachant que je travaille en MDICAD je suis sur form1 je rentre une valeur dans dans MDI container [ par paloxicide ] G un form container sans menu. Ensuite, g 2 form mdiChild (form1 et form2) qui sont donc donc dans le container. Mon pb est que je n'arrive pas de pa Form1 et Form2 [ par emmanuel9 ] Boujour à tous, J'ai une form qui s'appelle Form1 et cette Form lance une autre Form qui s'appelle Form2 et je voudrais que dès que Form2 est affich form inaccessible [ par cpetter ] BonjourJe débute en C# et j'ai un petit problèmeJ'ai un form qui est mon programme principalEn plus j'ai un form qui s'ouvre depuis le menu du form1 e Accèder à une varible d'une autre Form [ par Kaneda Shotaro ] J'ai 2 forms : Form1 et Form2. Cette dernière est créée par Form1.Dans Form1 il y a ceci :namespace MonAppli{    public partial class </font Passer d'une form a une autre :s [ par wally88 ] Bonjour, alors j'ai vraiment du mal mais je n'arrive pas a passer d'une form a une autre. Dumoin afficher la form2 depuis un bouton placer sur la form Lancer une Form depuis une autre [ par PiKtchou ] Bonjour,Je souhaite lancer une Form2 depuis une Form1, et pouvoir fermer Form1 en conservant Form2 ouvert. J'ai essayé le code suivant ://en C#.NET//D DatagridView et dérivation d'un form [ par RMI ] Bonjour,J'ai un soucis avec VS2005.J'ai sur un formulaire Form1 un datagridview noté protected. Je dérive Form1 en Form2 mais je ne peux pas déplacer


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales