Я пытаюсь показать контекстное меню, когда я оставил клик NotifyIcon. Просто вызов NotifyIcon.ContextMenuStrip.Show() работает не очень хорошо. A solution has been posted here before, что вызывает секретный метод с использованием Reflection:Показать контекстное меню NotifyIcon и управлять его положением?
Dim mi As System.Reflection.MethodInfo = GetType(NotifyIcon).GetMethod("ShowContextMenu", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
mi.Invoke(Icon, Nothing)
Это прекрасно работает, за исключением того, что мне также нужно контролировать , где показано меню. Я хочу дождаться, когда SystemInformation.DoubleClickTime пройдет между получением события NotifyIcon.MouseUp и отображением меню, чтобы я мог обрабатывать отдельные клики и двойные щелчки отдельно. Но вызов метода ShowContextMenu отображает меню в текущей позиции мыши при вызове ShowContextMenu, а не при нажатии на значок. Это означает, что если мышь перемещалась во время DoubleClickTime, меню будет отображаться в другой части экрана. Поэтому, если я могу контролировать, где отображается меню, я могу просто сохранить координаты мыши, когда получаю событие MouseUp, а затем я могу убедиться, что меню отображается возле значка. Есть ли способ сделать это?
Заранее спасибо.