J'utilise des contrôles qui piègent la validation lorsque quelque chose se produit, y compris lorsque les utilisateurs appuient sur le bouton de sortie. Est-il possible de dire si le bouton de sortie a été enfoncé?.Formulaires WinDind si le bouton Quitter a été enfoncé
Répondre
Merci à tous. J'ai trouvé une solution qui évitait cela complètement. J'essayais d'utiliser la fonctionnalité Infragistics LimitToList d'une liste déroulante. Cependant, cette fonctionnalité empêche TOUS les autres événements de se déclencher, y compris la fermeture de formulaire! Pour contourner le problème, je pensais vérifier si le bouton de sortie était enfoncé dans la fonction LimitToList, puis désactiver LimitToList pour permettre la sortie. J'ai donc commencé à vérifier ActiveControl, yada, yada, mais j'ai rencontré beaucoup de problèmes (que se passe-t-il si un autre formulaire est ouvert, etc.)
J'ai donc abandonné la fonction LimitToList et écrit mon propre événement de validation en utilisant la méthode de validation standard. Pourquoi quelqu'un écrit une fonctionnalité qui prévient la fermeture de formulaire est au-delà de moi!
Si vous voulez dire le bouton Fermer en haut à droite d'une fenêtre, vous devez utiliser l'événement FormClosing.
J'ai passé cette méthode pour pouvoir donner à un de mes programmes un "réduire au plateau" à proximité. Assez simple –
En supposant que le bouton de sortie fait référence au petit bouton 'X' dans le coin supérieur droit; non. C'est-à-dire que cliquer sur le bouton déclenche directement l'événement onClose, sans aucune pression sur les boutons intermédiaires ou événements auxquels vous pouvez vous lier. Une fois que vous êtes dans le OnClose, vous pouvez essayer de comprendre comment vous y êtes arrivé, mais il n'y a pas d'étape intermédiaire. Ce que je recommande, c'est que toute votre validation soit appelée depuis l'événement de clôture; En cas d'échec d'une validation, vous pouvez annuler la fermeture via les arguments d'événement onClose, et travailler à partir de là.
Cela explique ce que je voyais quand j'ai essayé de piéger l'objet ActiveControl. Merci, vous avez raison. – Jeff
Pour ajouter à ce que Ray a dit, vous pouvez vérifier l'événement FormClosing du formulaire.
Plus précisément, consultez la propriété CloseReason de FormClosingEventArgs. Si l'utilisateur a cliqué sur le «x» dans le coin supérieur droit du formulaire, la valeur de cette propriété sera UserClosing. Cependant, si vous avez votre propre bouton Fermer qui ferme le formulaire, cette propriété aura la même valeur, donc vous ne pouvez pas dire comment l'utilisateur a fermé le formulaire. Ce que je fais est d'ajouter un champ booléen à mon formulaire appelé quelque chose comme _closeButtonClicked, et mettre à true si mon bouton Fermer a été cliqué. Dans mon événement FormClosing je vérifie e.CloseReason == UserClosing et _closeButtonClicked.
Cela fonctionne pour moi mais j'aimerais savoir s'il y a une meilleure façon.
- 1. Déterminez quel bouton a été enfoncé dans Tkinter?
- 2. Dans un gestionnaire onclick, comment puis-je détecter si le décalage a été enfoncé?
- 3. C#: Obtenir quel bouton a été enfoncé dans un tableau de boutons # gtk?
- 4. bouton qui a été taraudés vue alerte
- 5. Déterminez si une connexion a été rompue
- 6. fichier batch Windows - vérifier si le fichier a été modifié
- 7. Javascript - vérifier si le prototype de méthode a été changé?
- 8. Vérifier si le contenu a déjà été envoyé en PHP
- 9. Détecter si un formulaire a été soumis avec PHP
- 10. Quel objet a été cliqué lorsqu'un événement a été déclenché?
- 11. JavaScript \ JQuery - identifiant si la valeur du bouton radio a été modifiée par un clic
- 12. Comment savoir si un formulaire a été modifié
- 13. capture quel bouton a été cliqué pour provoquer la validation
- 14. Quel bouton a été tapé ... iPhone et Obj-C question
- 15. Comment puis-je savoir si un bouton est enfoncé dans mon application iPhone?
- 16. Application S60 - Symbian C++ - Le bouton Quitter ne fonctionne pas
- 17. comment vérifier quand le champ enter/return a été activé?
- 18. VCRedist - comment puis-je savoir si elle a été exécutée?
- 19. Déterminez si un événement a déjà été attaché
- 20. Déterminer si un message sur tcp a été livré
- 21. Comment puis-je vérifier si une structure a été initialisée?
- 22. xsl: comment dire si une variable a été déclarée
- 23. Comment déterminer si une URL asp.net a été "réécrite"?
- 24. Comment déterminer si itérateur de sortie a été modifié
- 25. Test si un Type a été enregistré dans Unity
- 26. Déterminer si un paramètre nommé a été passé
- 27. Vérifiez si l'enregistrement a été détruit juste dans des rails
- 28. Quitter le mode d'édition
- 29. exécution a été interrompue
- 30. L'événement OnClosing n'est pas appelé lorsque le bouton Close, X, est enfoncé. Windows Mobile
Veuillez définir "Bouton de sortie". –
Voulez-vous dire fournir un mécanisme pour arrêter l'utilisateur par le biais d'un message du genre "fermer ce formulaire annulera toute mise à jour ou tout ajout?" – Chris