Probleme dOuverture et de Fermeture de Form

Signaler
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Ok je vais tester ta solution demain midi et je te dirai koi

Merci
Maiku
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Ouioui, tu as raison, c'est une erreur de ma part. un ptit inversement dans ma tete ;)

Mx