2010-03-19 8 views
3

J'essaye de déterminer si mon application est fermée en cliquant sur le "X" sur le formulaire de fenêtres, ou s'ils ont cliqué sur un bouton "Exit" que j'ai dessus. En ce moment j'utilise StackTrace.GetFrame (someIndex) pour déterminer comment, mais je suis à la recherche d'un moyen plus définitif, car il semble que ces commandes soient garanties. Y a-t-il une meilleure façon de faire la distinction? Ceci est un .NET 3.5 WinForm, et Im écrit en C#.Déterminez comment une application est fermée

Répondre

4

Utilisez un événement différent pour gérer votre propre clic sur le bouton "Quitter". Dans votre propre gestionnaire d'événement "Exit", exécutez votre logique supplémentaire ou définissez une variable d'état, puis appelez la méthode de fermeture d'application normale.

Publiez quelques exemples de la façon dont vos événements sont câblés et je donne un exemple plus précis. En général, il ressemblerait à quelque chose comme ceci:

private void btnMyExit_Click(object sender, EventArgs e) 
{ 
    // TODO: add any special logic you want to execute when they click your own "Exit" button 
    doCustomExitWork(); 
} 

public static void OnAppExit(object sender, EventArgs e) 
{ 
    doCustomExitWork(); 
} 

private void doCustomExitWork() 
{ 
    // TODO: add any logic you want to always do when exiting the app, omit this whole method if you don't need it 
} 
+0

ya, différents événements est ce que je pensais, mais c'est le code laissé par un développeur plus senior et je prenais juste son code comme "la bonne façon" –

0

Utilisez l'événement FormClosing et interroger les FormClosingEventArgs pour la valeur CloseReason enum.

+0

malheureusement en cliquant sur le X dans un coin formes, et en cliquant sur un bouton qui sort de l'application les deux ont la même énumération –

+0

@Mike_G - n'a pas lu votre question de près. Maintenant, je suis curieux de savoir quelle différence cela fait? – jac

+0

Vous voulez dire pourquoi nous voulons savoir comment ils le ferment? Nous essayons d'émuler un "minimiser sur X clic" comme celui de MSN Messenger. –

Questions connexes