Communiquer entre les forms en gardant les valeurs

Signaler
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009
-
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009
-
salut.
voila je voudrais savoir comment faire pour communiquer entre mes forms en gardant les valeurs des controles car en utilisant new a chaque fois j'avais un objet nouveau mais sans les anciennes données
petite precision jutilise le framework 1.1 et ne peut utiliser le 2.0 car jai la version visual 2003
merci

sandra

18 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Salut,
Je te laisse regarder cette source... qui commence à dater certes, mais qui est toujours autant utile :-)

VC# forever
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Ha oui, elle est en .NET2, mais le code est identique en .NET1...

VC# forever
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
l'utilisation du mot clé new permet de créer une nouvelle instance d'un objet. Donc les valeurs qu'elle contient sont celles défini par défaut.

Si le but est de partagés des valeurs entre plusieurs instances d'une classe, tu peux utiliser des membres statiques... Mais attention, tu vas vite de mélanger les pinceaux.
Par contre, si le but est de n'avoir qu'une seule instance de ton formulaire, je conseille l'utilisation d'un singleton.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

Merci pour vos reponses,
le probleme est que je crois que je me suis mal exprimee, j'en suis vraiment desolee


en fait jai 2 pages ouvertes et je veux que si lutilisateur decide de fermer une page alors la seconde s'affiche.


le pb est que la seule solution que j'ai trouve cest de faire new de cette page pui utiliser la fonction ShowDialog ou Show


mais je ne veux pas ouvrir une autre page, je veux celle qui est deja ouverte


En tout cas je mexcuse si ce n'est pas ce que vous avez compris dans ma question

sandra
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

En tout cas Bidou ta source est tres interressante et vraiment bien expliquee
je vais la garder de cote, je crois quelle me servira un peu plus tard

sandra
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
donc... tu veux réouvrir (ou réafficher) un formulaire déjà existant !
il faut donc tu utilises un singleton

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

salut sebmafate,
je suis sur que ta reponse est ce que jattendais mais je tavoue que je vien de faire des recherches sur le site et je ne comprend pas tres bien comment se servir ce cette classe
jai trouve un code mais je ne vois pas du tout ou le place ni comment et quand est-ce que je men sert
je ne comprend pas comment je fais pour reouvrir ma fenetre

je ten prie jai besoin de ton aide stp

sandra
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
Pour faire simple.

Il faut que ton formulaire propose un mécanisme du même type que la classe Singleton.
Pour ce faire, ajoute ceci :

private static Form instance;
public static Form GetInstance() {
    if (instance == null) {
       instance = new MonForm();
    }

    return instance;
}

ainsi pour (ré)ouvrir ton formulaire, il te suffit de faire : MonForm.Show()

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

Donc enfait si je veux retourner vers ma Form1 j'ecris ce bout de code dans ma Form1 et je l'appel de la Form2 grace a Form1.Show();

sandra
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
oops... une erreur s'est glissé dans mon code... c'est MonForm.GetInstance().Show();

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

ah ok je ne parvenai pas a obtenir Show() autrement que lorsquon ouvre une nouvelle page


 


regarde , maintenant le pb cest quil mouvre une nouvelle page, au lieu de mafficher la page deja existante quesque je dois faire

sandra
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
en fait, il suffit maintenant de toujours ouvrir ton premier formulaire en utilisant MonForm.GetInstance().Show();

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

ok mais mon premier formulaire est le main , donc le projet louvre tout seul

sandra
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
ok... dans ce cas, le plus simple est de modifier le main de ton application comme ceci :

public static void Main() {
    Application.EnableVisualStyles(true);
    Application.DoEvents();

    MonForm.GetInstance().Show();
    Application.Run();
}

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

ok super
merci bcp pour ta patience

sandra
Messages postés
3
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
15 septembre 2006

Boul
salut
pour ton probleme il y a une solution tres efficace


dans ta 2eme form dans le constructeur elle a un parametre de type Form1 , tu declare une variable globale ex: f1:
dans le costructeur de form2 tu aura:




class Form2
{
   private Form1 m_form1;
   
   public From2(Form1 frm1)
   {
      thisf1 = frm1;
   }
}
est lors de l'appel dans Form1 tu fait:
Form2 frm2 = new Form2(this);

maintenant avec f1 tu peut acceder a tous les controles, variables et methodes de form1.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
boulist... ca marche pas ton truc... puisque les controles sont par défaut private. de plus tu crées un lien fort entre les 2 formulaires, ce qui complique les mises à jour.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

encore une fois cest moi sebmafate,  
voila je ne peux pas faire  Application.EnableVisualStyles(true);
mais seulemt  Application.EnableVisualStyles();
de plus, je ne sais pas si cest a cause de ca, mais ma fenetre reste toujours au bas de la page,
qu'en pense-tu?

sandra