NotifyIconを左クリックすると、コンテキストメニューを表示しようとしています。NotifyIcon.ContextMenuStrip.Show()を呼び出すだけでは、うまく機能しません。Reflectionを使用してシークレットメソッドを呼び出す前に、ソリューションがここに投稿されています。
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イベントを受信したときにマウスの座標を保存するだけで、メニューがアイコンの近くに表示されるようにすることができます。これを行う方法はありますか?
前もって感謝します。