当我左键单击 NotifyIcon 时,我试图显示上下文菜单。仅仅调用 NotifyIcon.ContextMenuStrip.Show() 并不能很好地工作。在此之前已在此处发布了一个解决方案,该解决方案使用反射调用了一个秘密方法:
Dim mi As System.Reflection.MethodInfo = GetType(NotifyIcon).GetMethod("ShowContextMenu", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
mi.Invoke(Icon, Nothing)
这很好用,除了我还需要控制菜单的显示位置。我想在接收到 NotifyIcon.MouseUp 事件和显示菜单之间等待 SystemInformation.DoubleClickTime 过去,以便我可以分别处理单击和双击。但是,当调用 ShowContextMenu 时,调用 ShowContextMenu 方法会在当前鼠标位置显示菜单,而不是在实际单击图标时。这意味着如果鼠标在 DoubleClickTime 期间移动,菜单将显示在屏幕的不同部分。所以如果我可以控制菜单的显示位置,我可以在收到 MouseUp 事件时保存鼠标坐标,然后我可以确保菜单显示在图标附近。有没有办法做到这一点?
提前致谢。