Comment savoir où l'utilisateur a cliqué sur “X” ou le bouton “Fermer”?
Dans MSDN, j'ai trouvé CloseReason.UserClosing
de savoir que l'utilisateur a décidé de fermer le formulaire
mais je suppose que c'est la même pour les deux en cliquant sur le bouton X ou en cliquant sur le bouton fermer.
Alors, comment puis-je faire la différence entre ces deux dans mon code?
Merci à tous.
- qui bouton de fermeture voulez-vous dire?
- Ce "bouton Fermer"?
- par exemple la fermeture par "ALT+F4"
- Dupliquer: stackoverflow.com/questions/1623756/...
- Pas la même question.
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes en demandant WinForms, vous pouvez utiliser le FormClosing() de l'événement. L'événement FormClosing() est déclenchée à tout moment, un formulaire est fermé.
Pour détecter si l'utilisateur a cliqué sur X ou votre CloseButton, vous pouvez l'obtenir par le biais de l'objet expéditeur. Essayez de lancer l'expéditeur comme un Bouton de contrôle, et de vérifier peut-être pour son nom "CloseButton", par exemple.
Sinon, je n'ai jamais nécessaire de différencier si X ou CloseButton a été cliqué, que je voulais réaliser quelque chose de spécifique sur la FormClosing événement, comme la fermeture de tous les MdiChildren avant la fermeture de la MDIContainerForm, ou en cas de vérification pour les modifications non enregistrées. Dans ces circonstances, nous n'avons pas besoin, selon moi, à différencier de l'un des boutons.
Fermeture par ALT+F4 déclenche également le FormClosing() de l'événement, car il envoie un message à l'écran qui dit de fermer. Vous pouvez annuler l'événement, par le réglage de la
Dans notre exemple, cela pourrait se traduire à
Notez la différence entre les FormClosing() et le FormClosed() événements.
FormClosing se produit lorsque le formulaire reçu le message d'être fermé, et de vérifier si elle a quelque chose à faire avant de fermer.
FormClosed se produit lorsque le formulaire est fermé, donc après qu'il est fermé.
Cela vous aide?
La
CloseReason
énumération que vous avez trouvé sur MSDN est juste dans le but de vérifier si l'utilisateur a fermé l'application, ou elle est due à un arrêt ou fermé par le gestionnaire de tâches, etc...Vous pouvez faire différentes actions, en fonction de la raison, comme:
Mais comme vous l'avez deviné, il n'y a pas de différence entre cliquant sur le bouton x, ou un clic droit sur la barre des tâches et en cliquant sur "fermer", ou en appuyant sur Alt F4, etc. Tout se termine dans un
CloseReason.UserClosing
raison.Le bouton "X" s'inscrit comme
DialogResult.Cancel
donc une autre option est d'évaluer l'DialogResult
.Si vous avez plusieurs boutons sur votre formulaire, vous êtes probablement déjà associant différents
DialogResult
s pour chaque, ce qui vous donnera les moyens de faire la différence entre chaque bouton.(Exemple:
btnSubmit.DialogResult = DialogResult.OK
,btnClose.DialogResult = Dialogresult.Abort
)DialogResult
resteNone
. Quel pourrait être le problème?Il détermine le moment de fermer l'application, si un formulaire est fermé (si votre application n'est pas attaché à une forme spécifique).
J'ai toujours utiliser une Forme Proche de la méthode dans mes applications que les captures alt + x à partir de mon Bouton de sortie, alt + f4 ou une autre forme de clôture de l'événement a été lancé. Toutes mes classes ont le nom de la classe définies en tant que Private string
mstrClsTitle = "grmRexcel"
dans ce cas, la Sortie de la méthode qui appelle la Forme de la Fermeture de la Méthode et une Forme de Clôture de la Méthode. J'ai aussi un énoncé de la Forme de la Fermeture de la Méthodethis.FormClosing = My Form Closing Form Closing method name
.Le code:
Vous pouvez essayer d'ajouter du gestionnaire d'événement de la conception comme ceci: Ouvrir le formulaire en mode création, ouvrez les propriétés de la fenêtre ou appuyez sur la touche F4, cliquez sur l'événement bouton de barre d'outils pour afficher les événements sur la Forme de l'objet, trouver FormClosing événement dans le Comportement de groupe, et double cliquez dessus.
Référence: https://social.msdn.microsoft.com/Forums/vstudio/en-US/9bdee708-db4b-4e46-a99c-99726fa25cfb/how-do-i-add-formclosing-event?forum=csharpgeneral
si la condition s'exécute lorsque l'utilisateur clique sur " X " ou le bouton de fermeture sur la forme. Le reste peut être utilisé lorsque l'utilisateur clique sur Alt+f4 pour toute autre fin