Problème de fermeture de Form

[Résolu]
Signaler
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Bonjour à tous,

J'ai une form avec une notifyicon et le problème c'est que quand je quitte windows mon appli empeche windows de se fermer j'ai l'impression. Quand windows est fermer par défaut il quitte les applis ouverte mais il s'arrete à la mienne. Soit mon appli est tellement mal concu que windows, qui est mal concu egalemment, deconne et n'arrive pas à la fermer ou soit y doit manquer un bout de code quelque part.

Qu'en pensez vous ?

Par avance, merci.

10 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Si c'est le cas, plusieurs choix (en .Net 1)

Ajouter ce code a ton appli


<HR>

public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
private bool closeClick;

protected override void WndProc(ref System.Windows.Forms.Message m)
{if(m.Msg WM_SYSCOMMAND && (int)m.WParam SC_CLOSE)
this.closeClick = true;
base.WndProc(ref m);
}

<HR>
Si closeClick est a true, tu annules ton evenement, sinon, tu laisses windows fermer.

Ou utiliser les evenements de la classe SystemEvents
Mx
MVP C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Salut,

Tu n'aurais pas une annulation dans l'evenement Closing de ton appli ?



Mx
MVP C#
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
hum... à la fermeture du formulaire ne ferais-tu pas un e.Cancel = false ?


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
ben oui justement je fais e.Closing = false pour qu'il ne reste plus que mon notifyicon de visible. Merci je vais suivre ton idée.C'est chiant je peux tjs pas valider les réponses, j'ai essayé avec firefox et explorer et ca ne fait rien.
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Ca serait pas un problème avec le javascript qui n'est pas actif ou un truc comme ca ?
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Je voudrais mettre en ligne une classe sur csharpfr qui recoit une ArrayList de chaine et qui renvoi une objet PrintDocument pour l'impression, ca gére le retour automatique à la ligne et le nombre de page. Mais c'est du c++.net, est ce que je peux le mettre en ligne ou bien est ce que je dois le convertir en c# ?
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Oui, pour la validation, y'a un petit bug ces temps.
Et pour ta source, si c'est du c++.net, il faut le mettre sur cppfrance (y'a une section .net). Sinon il faudra que tu la convertisse en C# pour la poster ici



Mx
MVP C#
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Dans l'évenement Closing de ma Form, j'ai :

MessageBox.Show(closeClick) ;

if (closeClick == false)
{
e.Cancel = true ;
this.Visible = false ;
}

Et quand je ferme Windows Le messagebox me marque "false".. et donc ne ferme pas mon appli.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Oui, closeClick sera a true quand c'est l'utilisateur qui va vouloir quitter la Form il me semble.
Donc il ne faut pas annuler l'evenement quand closeClick est a false, mais quand closeClick est a true...



Mx
MVP C#
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
if (closeClick == true)
{
e.Cancel = true ;
this.Visible = false ;
}

Oui comme ca, ca marche, j'avais inversé, merci de ton aide.