Communiquer entre les forms en gardant les valeurs

sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009 - 15 sept. 2006 à 08:48
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009 - 17 sept. 2006 à 11:14
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

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

VC# forever
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
15 sept. 2006 à 09:28
Ha oui, elle est en .NET2, mais le code est identique en .NET1...

VC# forever
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2006 à 09:29
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#]
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
15 sept. 2006 à 09:42
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
15 sept. 2006 à 09:43
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2006 à 09:50
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#]
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
15 sept. 2006 à 10:31
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2006 à 10:52
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#]
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
15 sept. 2006 à 11:41
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2006 à 11:42
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#]
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
15 sept. 2006 à 11:47
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2006 à 11:55
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#]
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
15 sept. 2006 à 13:39
ok mais mon premier formulaire est le main , donc le projet louvre tout seul

sandra
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2006 à 14:11
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#]
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
15 sept. 2006 à 14:57
ok super
merci bcp pour ta patience

sandra
0
BOULIST Messages postés 3 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 15 septembre 2006
15 sept. 2006 à 17:18
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.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 sept. 2006 à 09:21
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#]
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
17 sept. 2006 à 11:14
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
0
Rejoignez-nous