BelleisaTQ
Messages postés10Date d'inscriptionvendredi 26 juin 2009StatutMembreDernière intervention15 juillet 2014
-
2 juil. 2009 à 16:22
sulit06700
Messages postés8Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention 8 décembre 2012
-
23 mars 2013 à 18:13
Bonjour,
J'ai un formulaire parent avec menustrip qui lorsque l'on clique sur un choix, ouvre un formulaire enfant.Pour empêcher le formulaire enfant d'ouvrir plus d'une fois, j'ai créer une variable "public static Form _instance = null;"
qui me permet de savoir si le formulaire enfant est déjà ouvert. Mon problème survient lorsque je ferme le formulaire enfant et que je désire le réouvrir par la suite. Comme ma variable n'est plus null, il ne s'ouvre pas.
Auriez-vous une idée ?
voici mon petit bout de code :
private void casesHorairesToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_instance == null)
{
_instance = new frmCaseHoraire();
afficherFormulaire(new frmCaseHoraire());
}
}
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 3 juil. 2009 à 00:21
Salut,
L'idée de maintenir une variable statique n'est pas mal mais ça impose de la mettre à null à la fermeture de la forme, surtout pour libérer la mémoire.
Peut être que dans ton cas un Dialog serait mieux.. on affiche un Dialog avec ShowDialog( ) à la place de Show( ) et on libère la mémoire avec Dispose( ).
Une autre solution assez simple :
if ( Application.OpenForms[ "Form2" ] == null )
{
Form f = new Form( );
f.Name = "Form2";
f.Show( );
}
cs_Psych0
Messages postés30Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention22 juin 20101 2 juil. 2009 à 21:05
Autant pour moi.
C'est juste que l'événement lancé lors du formClosing n'a pas la forme habituelle :
EventHandler myEvent(object sender, EventArgs e)
Mais requiert un handler qui dérive d'EventHandler, celui mentionné dans le message d'erreur, un FormClosingEventHandler.
Mais rassure toi, tu n'as pas besoin de retenir par coeur quel type d'handler est associé à tel événement, si tu utilises Visual Studio pour tes développements, lorsque tu tappes _instance.FormClosing += l'intellisense va te proposer automatiquement l'eventhandler qu'il faut, il te suffit dès lors de pousser 2x sur TAB pour qu'il s'abonne à l'événement et qu'il te crée la méthode qui sera lancée lorsque l'événement se produira.
Vous n’avez pas trouvé la réponse que vous recherchez ?
BelleisaTQ
Messages postés10Date d'inscriptionvendredi 26 juin 2009StatutMembreDernière intervention15 juillet 2014 2 juil. 2009 à 21:23
Merci de me répondre. J'ai trouvé pour le handler dans le formulaire parent mais ça ne fonctionne pas car lors de la fermeture du formulaire enfant l'évènement n'est pas appelé.
sulit06700
Messages postés8Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention 8 décembre 2012 23 mars 2013 à 18:13
Bonjour,
Je suis actuellement entrain de programmer un logiciel avec Visual Studio 2008.
Le contexte : J'ai créé un formulaire/fenêtre MiseEnPage qui comme son nom l'indique permet de positionner des éléments pour la mise en page des autres formulaires/fenêtres. Quand je crée un nouveau formulaire/fenêtre, je le fais hériter de ce dernier pour que la mise en page soit identique.
Mon problème : Dans ce formulaire MiseEnPage, j'ai un menuStrip qui me permet de naviguer parmi les formulaires/fenêtres.
Seulement, je voudrais faire en sorte que lorsque je suis sur un formulaire/fenêtre actif et que je clique sur le bouton menuStrip qui me permet d'afficher ce formulaire/fenêtre, celui-ci ne bouge pas. C'est-à-dire, qu'il reste actif comme si rien ne s'était passé.
Pour le moment, le code de l'évènement sur le formulaire MiseEnPage est :
form formAccueil = new FormAccueil();
formAccueil.show();
this.hide();
Donc comme je l'ai dit précédemment le "this" peut être le FormAccueil qui serait alors déjà affiché.