Comment obtenir le handle du formulaire de premier plan dans une application WinForm?
J'ai une application WinForm qui a d'autres formes d'enfants (pas mdi). Si l'utilisateur appuie sur "Echap" du formulaire de premier plan devrait être fermé, même si elle n'a pas le focus.
Je peux utiliser un hook clavier à l'échelle mondiale attraper le fuir, mais j'ai aussi besoin de la poignée de la forme fermée.
Je pense qu'il y a un moyen de le faire à l'aide de l'API Win32, mais est-il une solution à l'aide de code managé?
OriginalL'auteur tzup | 2009-06-16
Vous devez vous connecter pour publier un commentaire.
Ici pour obtenir le formulaire de premier plan qui utilise Win32 (pas très élégant, mais il fonctionne):
OriginalL'auteur tzup
Comment à ce sujet à l'aide de Application.Openforms
OriginalL'auteur Simon
Je sais que c'est un 4 yr vieux thread, mais j'ai eu un problème similaire et vient avec une solution alternative, juste au cas où quelqu'un d'autre bute sur cette question et n'a pas envie de se compliquer la vie avec des appels Win32.
Je suppose que le haut de la forme sera celle qui a été la dernière activé. De sorte que vous pouvez garder une collecte séparée des formes, similaire à l'Application.OpenForms, à l'exception de cette collection serait commandé par lors de chaque dernière activation. Chaque fois qu'un formulaire est activé, le déplacer vers le premier élément de la collection. Chaque fois que vous voyez la touche ESC, la clôture de la collection[0] et l'enlever.
OriginalL'auteur fred
FormCollection est utilisé par l'objet de l'Application de la liste actuellement formulaires ouverts dans une application par le biais de la OpenForms propriété
Voir http://msdn.microsoft.com/en-us/library/system.windows.forms.application.openforms.aspx
Ensuite, vous pouvez cocher la case Supérieure() de la propriété de chaque forme. Et quand vous trouvez un formulaire de premier plan, vous la fermez.
OriginalL'auteur Bogdan_Ch
Vous pouvez implémenter un singleton-comme le modèle de votre formulaire de premier plan, et de fournir une propriété statique qui retourne une instance de lui-même et il suffit de la fermer.
Je pense que vous avez peut-être mal compris sa réponse. Il y a un seul MainForm ouvrir à un moment, non? Le pattern singleton présente une statique de la poignée à la forme de n'importe où dans l'application, y compris votre clavier crochet.
Yates, l'exigence est d'être en mesure de fermer les formulaires enfants, pas le formulaire principal.
Ah, je comprends. Quand vous dites "de niveau supérieur" vous moyenne la plus élevée de l'ordre z, pas le haut de la société mère-enfant forme de hiérarchie. C'est un peu déroutant.
OriginalL'auteur NascarEd