Passage d'une fenetre à une autre

Résolu
hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007 - 18 mai 2005 à 16:29
hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007 - 19 mai 2005 à 11:29
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

hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007
19 mai 2005 à 11:29
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
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
18 mai 2005 à 16:47
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 mai 2005 à 16:52
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>
0
hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007
18 mai 2005 à 16:53
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
0

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

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
18 mai 2005 à 16:55
C'est juste, j'oublie toujours cette property !

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# 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
18 mai 2005 à 16:56
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 mai 2005 à 16:58
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>
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 mai 2005 à 16:58
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
0
hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007
18 mai 2005 à 17:08
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 mai 2005 à 17:12
void Retour_Click(object sender
, System
.EventArgs e
)


{


this.ParentForm
.Show();


this
.Hide();


}

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 mai 2005 à 17:13
this.ParentForm.Show();

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 mai 2005 à 17:14
bon, tant pis

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 mai 2005 à 17:14
Hop, un poulet rôti

Mx
0
hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007
18 mai 2005 à 17:16
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 !!
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
18 mai 2005 à 17:19
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 mai 2005 à 17:19
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>
0
hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007
18 mai 2005 à 17:23
- 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();


}
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 mai 2005 à 17:27
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>
0
hetneo Messages postés 28 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 janvier 2007
18 mai 2005 à 17:32
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
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 mai 2005 à 17:33
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#
0
Rejoignez-nous