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.
InformationsquelleAutor Rob Prouse | 2008-11-11