Je souhaite fermer un formulaire modal lorsque l'utilisateur clique à l'extérieur (n'importe où sur le bureau de l'ordinateur) sur le formulaire modal. Comment pouvons-nous faire cela comme une forme modale n'est pas destinée à perdre le focus.Fermer Modal Formulaire lorsque la souris clique en dehors de la zone de formulaire
Répondre
Je ne pense pas que vous ayez besoin de modalité ... alors vous pouvez prendre l'option de siride de le fermer sur l'événement Deactivate
. La raison pour laquelle vous n'avez pas besoin de le rendre modal: La première fois que vous l'affichez, il aura le focus et sera le plus haut possible. Modal vous empêche de cliquer ailleurs, mais vous voulez pouvoir cliquer ailleurs ... et quand vous le faites, le formulaire disparaît, il n'y a donc pas de besoins modaux.
Que faire si le programmeur ne peut pas changer la nature modale? Supposons que c'est par conception? Néanmoins, si nécessaire, il existe d'autres moyens. Je ne vous rejetterai pas, bien que je pense que vous n'avez pas compris les possibilités. – Nayan
En outre, Guamez a déclaré, l'utilisateur peut cliquer sur "Desktop". Même alors, le code devrait fonctionner. Vous pouvez toujours cliquer sur le bureau même si vos formulaires sont modaux .. sauf quelques scénarios spéciaux. – Nayan
En supposant que le code suffise pour répondre aux clics de l'utilisateur, il peut probablement décider de l'affichage du formulaire. Quelles autres idées pensez-vous? –
Vous devez accrocher la souris (et le clavier si nécessaire) et capturer leurs événements. Ensuite, vérifiez si le clic est arrivé en dehors du formulaire (et de la zone). Si oui, marquer un signe qui peut être lu par le formulaire de modèle qu'il peut fermer.
Algo:
Crochet événement click de souris.
Lorsque la fonction de rappel est appelée, vérifiez la position de clic - si elle est à l'intérieur de votre forme ou non (vous pourriez avoir besoin de traduire les emplacements aux emplacements de bureau - J'espère que vous savez comment!)
Si le point est en dehors du formulaire, définissez un drapeau (booléen ou tout ce qui vous rend heureux). Assurez-vous que le formulaire peut lire le drapeau en quelque sorte. Déclencher un événement pour que le formulaire soit capturé.
Dans son gestionnaire, lisez le statut du drapeau. Si vrai, fermez/déchargez le formulaire.
C'est beaucoup de travail pour ce qui pourrait être une réponse simple. Si le PO a absolument besoin que ce soit une forme modale (et je ne vois pas pourquoi il le ferait), alors ce que vous dites fonctionnera (c'est encore beaucoup d'efforts).Je préfère des solutions simples, cependant, autant que possible –
Laissez OP décider que :) – Nayan
Voici la solution exacte à votre question:
http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C#
- 1. Comment empêcher la validation d'être déclenché lorsque je clique sur X (bouton Fermer) sur le formulaire
- 2. développez div lorsque l'utilisateur clique dans la zone de texte?
- 3. Comment cacher une div quand on clique sur la souris en dehors de la div
- 4. Comment fermer le formulaire non-modal dans Delphi
- 5. Comment fermer un formulaire modal juste après l'avoir ouvert?
- 6. détecter un clic de souris qui est en dehors du formulaire
- 7. Sélection de primitives lorsque la souris ne clique pas
- 8. appelant une fonction javascript lorsque l'utilisateur clique sur 'X' pour fermer un formulaire
- 9. Dialogue modal et éléments de formulaire
- 10. Comment fermer un formulaire en appuyant sur la touche d'échappement?
- 11. Fermer un popup modal de vb.net?
- 12. Fermer le formulaire à partir de la méthode statique
- 13. Le contrôle utilisateur WPF peut-il détecter MouseMovement lorsque la souris est en dehors de la zone UC?
- 14. Fermer le formulaire de dialogue ferme la forme parent
- 15. Implémenter la souris et l'événement de clic de souris pour la zone d'écran spécifiée
- 16. Comment utiliser la valeur de la zone de texte d'un formulaire à un autre formulaire?
- 17. Formulaire soumis dans FireFox lorsque l'on clique sur un bouton de la page
- 18. Afficher/Masquer ContextMenuStrip en dehors du formulaire
- 19. Css problème de fondu de fond avec jQuery formulaire modal
- 20. popup retourne à l'état caché lorsque vous cliquez en dehors de la zone popup
- 21. Fermer un bloc lorsque la souris est hors du lien
- 22. Comment sélectionner les valeurs de la zone de texte dans le formulaire Windows
- 23. Renouveler les données de formulaire lors de la fermeture d'un modal simple
- 24. Comment faire pour modal système de formulaire en utilisant C#?
- 25. Javascript - Détecter si le bouton de la souris est enfoncé lorsque la souris est entrée dans la zone active (la souris a été enfoncée en dehors de cette zone)
- 26. effacer la zone de texte après le formulaire soumettre
- 27. Limite de la zone de texte du formulaire Google Chrome
- 28. Le formulaire de dialogue modal n'est pas au centre du parent lorsque l'application est en mosaïque
- 29. formulaire de validation du message dans la zone de texte
- 30. Fonctionnalité par défaut de surcharge VB.NET lorsque l'utilisateur clique sur le bouton X (Fermer le programme)
Focus a rien à voir avec elle, Michael. Je pense que vous avez ajouté la dernière ligne. :) – Nayan