J'essaie d'afficher un menu contextuel lorsque je clique sur un NotifyIcon. Il suffit d'appeler NotifyIcon.ContextMenuStrip.Show() ne fonctionne pas très bien. A solution has been posted here before qui appelle une méthode secrète utilisant la réflexion:Afficher le menu contextuel NotifyIcon et contrôler sa position?
Dim mi As System.Reflection.MethodInfo = GetType(NotifyIcon).GetMethod("ShowContextMenu", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
mi.Invoke(Icon, Nothing)
Cela fonctionne très bien, sauf que je dois aussi contrôler où le menu est affiché. Je veux attendre que le SystemInformation.DoubleClickTime se soit écoulé entre la réception de l'événement NotifyIcon.MouseUp et l'affichage du menu, de sorte que je puisse gérer les simples clics et les doubles-clics séparément. Mais l'appel de la méthode ShowContextMenu affiche le menu à la position actuelle de la souris lorsque ShowContextMenu est appelé, et non lorsque l'icône a été cliquée. Ce qui signifie que si la souris est déplacée pendant le DoubleClickTime, le menu sera affiché dans une partie différente de l'écran. Donc, si je peux contrôler où le menu est affiché, je peux simplement enregistrer les coordonnées de la souris lorsque je reçois l'événement MouseUp, puis je peux m'assurer que le menu est affiché près de l'icône. Y a-t-il un moyen de faire cela?
Merci d'avance.