[C#] Quitter l'application dans le constructeur MainForm()
scoubidou944
Messages postés714Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention19 janvier 2017
-
3 juin 2004 à 01:31
Noib
Messages postés1Date d'inscriptionvendredi 7 mars 2003StatutMembreDernière intervention24 février 2012
-
24 févr. 2012 à 16:29
De retour dans les problèmes simples qui bouffent la vie ;p
J'ai une appli avec pour formulaire principal l'objet MainForm.
Ce dernier appelle la fonction InitializeComponent() généré par Visual Studio et ensuite, je peux poser mon code d'init.
Dans ce code d'init justement, j'ouvre une boite de dialogue pour choisir différentes options dont celle de quitter si l'utilisateur se rend compte qu'il a 2 mains gauches & 10 pouces et qu'il n'a donc pas cliqué sur la bonne appli.
Ma dialog retourne DialogResult.OK ou DialogResult.Cancel jusque la aucun pb.
Par contre :
this.Close();
dans le cas du Cancel, bah ca marche pas :(.
Une ID ?
Thx.
Vince
----------------------------
C++ forever
C# amateur
scoubidou944
Messages postés714Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention19 janvier 2017 4 juin 2004 à 12:25
Le problème vient en fait que la procédure de 'quittage' est dans le constructeur de MainForm.
On a donc le Main() suivant :
static void Main()
{
MainForm oForm;
oForm = new MainForm();
Application.Run(oForm);
}
Et donc le plantage a lieu lors de l'appel de Application.Run puisque l'objet est valide mais le constructeur a appelé la fin de l'appli (le destructeur etant appelé implitement après Application.Run()
----------------------------
C++ forever
C# amateur
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_ppao
Messages postés12Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 5 janvier 2006 9 juin 2004 à 13:20
Si tu reçoit un DialogResult.Cancel, tu peux lancer un thread qui va dormir un peu et qui vérifie à intervalles réguliers la propriété Created de ta Form, si c'est true, tu met un this.Close(), sinon le thread se rendor un peu etc...
Le framework met la propriété Created à true à la fin du constructeur d'une Form.
Comme ça toutes les initialisations se font, mais le framework peu libéréer les resources lors du Close() et quitter l'application.
(On peut aussi utiliser l'idée pour implémenter un splashscreen en adaptant un peu.)