Passage d'une fenetre à une autre

[Résolu]
Signaler
Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007
-
Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007
-
Bonjour,
Suite à mon dernier post sur la creation d'un nouvelle fenetre, je me demandé vu que je HIDE le fenetre mere lorsque je crée une nouvelle fenetre commen refaire apparaitre la fenetre mere en appuyant sur un bouton de la fenetre fille par exemple ??

Code fenetre mere

Form f
= new Form1();


f
.Show();


this
.Hide();

Et comment reafficher la fenetre mere à partir de la fenetre fille ?

Merci

23 réponses

Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007

Ben je tiens à remercier en particulier Bidou .... pour son aide magicalement precise .. mdr et tout les autres ayant participer a cet convers
Je vais donc poster la solution (enfin une qui marche)

Fenetre1 (MainForm) qui cree la fenetre 2


void Click_fenetre2(object sender
, System
.EventArgs e
)


{


this
.Hide(); // Cache fenetre principale


Form1 f1
= new Form1 (); // Creation fenetre2


f1
.MainForm
= this
; // référence


f1
.Show();


}

Fenetre2 (Form1) qui re-affiche la fenetre1 deja cree


private Form _Form
= null
;


public Form MainForm



{


get { return this
._Form
; }


set { this
._Form
= value
; }


}

//-------------------//

void Retour_Click(object sender, System.EventArgs e)


{


this
.Hide();


this
._Form.Show();


}


Voila ... ca marche trop bien ... super

Merci encore à tous
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
Salut,
Il faut que Form1 possède une référence de la form courante.

Form1 f1 = new Form1();
f1.Form = this; // Référence
f1.Show();

this.Hide();

Puis dans f1 : tu accèdes à ta variables this._form.Show();

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
y a plus simple quand même...
chaque formulaire connait son parent : f.ParentForm

donc f.ParentForm.Show();

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007

Salut ..
Merci pour ta réactivité ..
Alors en dirait qu'il y a un petit souci .. sur f1.Form = this; il y a une erreur sur le .Form il n'est pas definit.
Comment faire ... lol
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
C'est juste, j'oublie toujours cette property !

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
Form c'est une Property que tu dois définir toi meme en fait !
Mais utilise la solution de sebmafate, elle est plus simple et meilleure

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
arf... attention tout de même avec cette propriété. elle n'est pas défini dans le constructeur : logique, le formulaire n'a pas été ouvert.

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
f1.Form = this; // Référence
Et sinon
essaie de nommer la propriété autrement que par Form parce que sinon le
compilateur va pas spécialement aimer si tu déclare le namespace
System.Windows.Forms


Mx
Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007

Bon en fait je dois vraiment etre bon ... car :

void Retour_Click(object sender
, System
.EventArgs e
)


{


f.ParentForm
.Show();


this
.Hide();


}

Voila le code du bouton de retour dans la fenetre 2 ... et il fo qu'il la face revenir dans la fenetre 1 qui la crée.

L'ecriture est abusé mais s'était pour montrer l'exemple, il ne faut pas que je re-crée une nouvelle fenetre car elle existe deja mais elle est caché, et si j'ecrit f.PrentFrom ca veur dire qu'il fo que je creer une autre fenetre f juste avant.
Je ne voit pas tro la !

Merci encore de repondre
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
void Retour_Click(object sender
, System
.EventArgs e
)


{


this.ParentForm
.Show();


this
.Hide();


}

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
this.ParentForm.Show();

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
bon, tant pis

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Hop, un poulet rôti

Mx
Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007

Ben ca aussi j'ai essayé ... mais quand je clique sur le bouton, il me met :

Une exception non gerée s'est produite .....
************** Texte de l'exception **************
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
at Essai1.Form1.Retour_Click(Object sender, EventArgs e) in c:\Documents and Settings\....\Form1.cs:line 170

J'suis degouté la !!
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
Lol y'a assez de monde pour répondre au moins...
Sinon poste le code que tu mis une fois... qu'on te corriges ça.

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
si on résume...
- le forumlaire f1 ouvre le f2
- f1 se masque
- tu cliques sur un bouton dans f2 pour afficher f1
- f2 se masque

c'est ça ?

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007

- le forumlaire f1 ouvre le f2
- f1 se masque
- tu cliques sur un bouton dans f2 pour afficher f1
- f2 se masque

OUAI c'est tout à fait ca

Code dans f1 qui ouvre f2


void Click_fenetre2(object sender
, System
.EventArgs e
)


{


Form1 f2
= new Form2();


f2
.Show();


this
.Hide();


}

Code dans f2 qui re-rendra visible f1

void Retour_Click(object sender
, System
.EventArgs e
)


{


this
.ParentForm
.Show();


this
.Hide();


}
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
void Click_fenetre2(object sender
, System
.EventArgs e
)


{


// Erreur là
// Form1 f2
= new Form2 ();
Form2 f2 = new Form2();


f2
.Show();


this
.Hide();


}

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
Messages postés
28
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 janvier 2007

euuuu non excuse ...
en fait
ma fenetre pricipal est dans MainForm.cs et la seconde est dans Form1

donc revoila la vrai code

Fenetre1


void Click_fenetre2(object sender
, System
.EventArgs e
)


{


Form1 f1
= new Form1();


f1
.Show();


this
.Hide();


}

Fenetre 2


void Retour_Click(object sender
, System
.EventArgs e
)


{


this
.ParentForm
.Show();


this
.Hide();


}

voili voilou
en fait c celui la qui plantouille
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
En plus je crois que /library/fre/cpref/html/frlrfSystemWindowsFormsContainerControlClassParentFormTopic.asp ParentForm n'est pas une bonne piste, il me semble qu'il est utilisé quand on travaille en MDI.
Il y a aussi Owner, mais qui lui aussi n'est pas fait que pour garder trace du "parent".
Donc la solution de Bidou (ajouter une propriété supplémentaire) est peut être la meilleure.

PS : Form1 f2 new Form2(); ??? > Form2 f2 = new Form2(); non ?



Cocoricoooooooo !!!!
coq
MVP Visual C#