Probleme dOuverture et de Fermeture de Form

Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007 - 9 nov. 2005 à 17:53
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 12 nov. 2005 à 10:20
Bonjour

J'ai deux Form appelées respectivement Sommaire et Rechercher.
J'aimerai que quand je clique sur le bouton Valider qui se trouve dans Sommaire, il ferme la Form, la Form Sommaire et m'ouvre la Form Rechercher. Mais à partir de la Form Rechercher ou d'autres Form, je dois pouvoir reouvrir mon Sommaire lorsque je ferme la Form (Rechercher ou Ajouter,etc).

Pour cela j'utilise le code suivant :

private void button1_Click(object sender, System.EventArgs e)
{

if(this.radioButton1.Checked==true)
{
choix = 1;
}
else if (this.radioButton2.Checked==true)
{
choix = 2;
}
else if (this.radioButton3.Checked==true)
{
choix=3;
}
else
{
choix = 4;
}
this.Close();



}

private void Sommaire_Closed(object sender,System.EventArgs e)
{ int ch = RenvoiChoix(choix);
MessageBox.Show(""+ch);
//e.Cancel=true;
switch(ch)
{
case 1 :

Form Recherche = new Rechercher();
Recherche.Show();
MessageBox.Show("Je suis ici");

break;
case 2 :
Form AjoutSoluce = new AjoutSoluce();
AjoutSoluce.Show();
break;
case 3 :
Form Affiche = new Afficher();
Affiche.Show();
break;
case 4 :

Application.Exit();
break;
}


}

Le Problème est le suivant, après avoir ouvert la form demandée, il me la ferme sans que je ne puisse y faire quelquechose.
Qq peut il me dire comment remedier a ce probleme ?

Merci d'Avance
Maiku

8 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 nov. 2005 à 20:01
Le probleme c'est si que si tu la fermes, tu n'as pas d'autre choix que de devoir la reinstancier.
Est-ce voulu ou non ?

Mx
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
9 nov. 2005 à 20:20
Ben en fait au debut j'avais juste ecrit :

this.Hide()
Form Rechercher = new Rechercher()
Rechercher.Show()

Mais le Problème c'est que je veux à partir de la form Rechercher, que quand je clique sur revenir au sommaire il me reaffiche le sommaire, mais je sais pas comment faire ?

Maiku
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 nov. 2005 à 20:34
Laisse comme ca, et inscris toi a l'evenement Closing de ta form Rechercher.
Et dans la méthode associée a l'evement, tu mets this.Show() pour reouvrir ton sommaire, je pense que ca devrait agir comme tu le souhaites

Mx
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
9 nov. 2005 à 21:07
Alors j'ai encore modifié le code par rapport à ce que tu m'as dit, donc l'evenement Closing de la Form Sommaire, je l'ai viré.
J'ai crée un Evenement Closing dans la Form Rechercher dans lequel j'ai mis :


private
void Rechercher_Closing(
object sender, System.ComponentModel.CancelEventArgs e)


{


MessageBox.Show(""+ch);



if(ch==1)


{ MessageBox.Show("ok");



this.Show();


}


}

Donc quand je clique dans mon menu sur Revenir au Sommaire, ch est egal = 1 si c'est le cas, il me reaffiche le sommaire sinon il ferme comme prévu.(enfin c'est ce qu'il doit faire théoriquement).

J'ai Modifié aussi le code du bouton Valider :


private
void button1_Click(
object sender, System.EventArgs e)


{



if(
this.radioButton1.Checked==
true)


{


choix = 1;


}



else
if (
this.radioButton2.Checked==
true)


{


choix = 2;


}



else
if (
this.radioButton3.Checked==
true)


{


choix=3;


}



else


{


choix = 4;


}



this.Hide();



switch(choix)


{



case 1 :


Form Recherche =
new Rechercher();


Recherche.Show();



break;



case 2 :


Form AjoutSoluce =
new AjoutSoluce();


AjoutSoluce.Show();



break;



case 3 :


Form Affiche =
new Afficher();


Affiche.Show();



break;



case 4 :


Application.Exit();



break;


}


}

Alors maintenant en pratique, il m'affiche mon sommaire au début, je fais mon choix, j'ai bien ma form Rechercher, et quand je clique sur Revenir au Sommaire, eh bien il me ferme le tout.
J'ai verifié, le ch qui arrive est bien 1.

Maiku
0

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

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 nov. 2005 à 21:18
Nonon, l'evenement Closing sur rechercher, tu le mets dans ta form Sommaire
En gros, dans ton switch tu mets


case 1 :
Form Recherche =
new Rechercher();
this.Recherche.Closing += new CancelEventArgs(Recherche_closing);
this.Hide();
Recherche.Show();

break;

et dans la meme classe


private
void Recherche_Closing(
object sender, System.ComponentModel.CancelEventArgs e)
{

this.Show();
}



Et tu fais pareil pour les autres fenetres de ce type

Au fait, ouvrir avec ShowDialog()

Mx
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
9 nov. 2005 à 22:23
Ok je vais tester ta solution demain midi et je te dirai koi

Merci
Maiku
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
12 nov. 2005 à 09:28
Kikoo

J'ai testé ta solution, mais j'ai des erreurs, d'autant plus que y a des trucs que tu as fait que je trouve bizarre, je te montre le code et je m'explique :


public int RenvoiChoix(int ch)


{


return(ch);


}


private void Sommaire_Closing(object sender,System.ComponentModel.CancelEventArgs e)


{


int ch = RenvoiChoix(choix);


MessageBox.Show(""+ch);


//e.Cancel=true;


switch(ch)


{


case 1 :


Form Recherche = new Rechercher();


this.Recherche_Closing += new System.ComponentModel.CancelEventArgs(Recherche_Closing);


MessageBox.Show("Je suis ici");


this.Hide();


Recherche.Show();


break;


case 2 :


Form AjoutSoluce = new AjoutSoluce();


AjoutSoluce.Show();


break;


case 3 :


Form Affiche = new Afficher();


Affiche.Show();


break;


case 4 :


Application.Exit();


break;


}


}


private void Recherche_Closing(object sender, System.ComponentModel.CancelEventArgs e)


{


this.Show();


}

Je ne trouve pas logiquement de mettre :
this.Recherche_Closing += new System.ComponentModel.CancelEventArgs(Recherche_Closing);

Car c'est un evenement dont on parle non ? donc ce serait plutot System.ComponentModel.CancelHandler(Recherche_Closing).
De plus il s'agit de la ligne ou le problème est situé : l'erreur est la suivante :

'SoluceVirus.Sommaire.Recherche_Closing(object, System.ComponentModel.CancelEventArgs)' désigne un 'méthode' qui n'est pas valide dans le contexte donné

Je dois t'avouer que je m'y perd un tout petit peu la ^^
Peut m'expliquer ce qui cloche ?

Merci d'Avance
Maiku
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
12 nov. 2005 à 10:20
Ouioui, tu as raison, c'est une erreur de ma part. un ptit inversement dans ma tete ;)

Mx
0
Rejoignez-nous