Désactiver les touches Alt+F4 mais de permettre à la forme doit être fermé par code, CloseReason.UserClosing n'est pas d'aider
Je veux que le formulaire ne sera pas fermer en faisant Alt + F4 mais si Application.Exit()
ou this.Close
est appelé à partir de la même Forme, il doit être fermé.
J'ai essayé CloseReason.UserClosing
mais toujours aucune aide.
- Avez-vous besoin de filtrer uniquement les touches Alt+F4 ou en cliquant sur le bouton fermer ainsi?
- J'ai enlevé le bouton Fermer.
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin de filtrer Alt + F4 événement uniquement (en laissant en cliquant sur fermer la boîte,
this.Close()
etApplication.Exit()
à se comporter comme d'habitude) alors je peux vous proposer les suivantes:KeyPreview
propriété à
true
;Fil du formulaire
FormClosing
etKeyDown
événements:C'est très facile, vous pouvez le faire par SuppressKeyPress true à la propriété sur Form_Keydown Gestionnaire d'événements comme ci-dessous.
Avec cela, vous pouvez également fermer votre forme active par SuppressKeyPress valeur false à la Propriété sur la même eventHandller ou de toute autre manière.
Capture Alt+F4 raccourci par la mise en Forme de la propriété KeyPreview de vrai et dominante OnProcessCmdKey méthode.
Comment avez-vous utilisé CloseReason?
Voir l'exemple de code ici:
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx
Vous devez définir la propriété Cancel du passé de FormClosingEventArgs objet d'arrêter la forme de clôture.
FormClosing
événement est que Alt+F4 et en appelantthis.Close()
ne pas être possible de les distinguer -- ils seront tous les deux ontCloseReason.UserClosing
.Close
méthode. Que faire si elle pourrait être appelée par certains composant tiers à un certain moment?.. Aussi,CloseReason.UserClosing
sera fixé lors de l'cliquant sur le formulaire la case de fermeture. (C'est le comportement souhaité?)