Comment faire pour afficher un Menu Contextuel lorsque vous cliquez droit sur un Élément de Menu
Je suis le portage d'une application MFC pour .NET WinForms. Dans l'application MFC, vous pouvez faire un clic droit sur un menu ou sur un élément de menu contextuel et de nous montrer un autre menu contextuel de diagnostic et des éléments de configuration. Je suis en train de le port de cette fonctionnalité .NET, mais j'ai de la difficulté.
J'ai été en mesure de capturer le clic droit, désactiver le clic de la sous-menu et ouvrir le menu contextuel et au bon endroit, mais le menu d'origine disparaît dès qu'elle perd le focus.
Dans MFC, nous montrons le nouveau menu contextuel en appelant TrackPopupMenuEx avec le TPM_RECURSE drapeau.
ContextMenu et la plus récente ContextMenuStrip classes .NET seulement une Montrer méthode. Personne ne sait comment faire cela dans .NET?
MODIFIER
J'ai essayé d'utiliser TrackPopupMenuEx par le biais d'un p/invoke, mais qui vous limite à l'aide d'un ContextMenu au lieu d'un ContextMenuStrip qui donne de la place dans notre application. Il également ne fonctionne toujours pas correctement. Il ne fonctionne pas avec la nouvelle MenuStrip et ContextMenuStrip.
J'ai aussi essayé sous-classement ToolStripMenuItem pour voir si je peux ajouter un menu contextuel pour elle. Qui est au travail pour MenuStrip, mais ContextMenuStrip permet toujours le clic droit, passer les événements de clics.
- Pourquoi ne pas simplement utiliser un sous-menu, de sorte que quand vous passez la souris sur l'élément de menu, il montre plus d'éléments?
- Beaucoup de nos menus ont déjà des sous-menus. Nous utilisons cette fonction pour les administrateurs de régler la sécurité de menus. Par exemple, un clic droit sur un menu et défini sur désactivé. Qui est stocké dans la base de données et prend effet pour tous les utilisateurs.
Vous devez vous connecter pour publier un commentaire.
Modifier, suite à un commentaire:
Dans:
cette partie
devrait et ne compiler que c'est un appel à Contrôle.MouseButtons. Puisque la Forme hérite de la classe de Contrôle, il suffit d'appeler MouseButtons propriété directement.
Espère que cela aide:
Vous aurez probablement à p/appeler la méthode.
Cela montre comment utiliser plusieurs ContextMenus ainsi que différents avec n'importe quelle combinaison de clics de souris.
Plus ici: http://code.msdn.microsoft.com/TheNotifyIconExample