【C#】コンテキストメニュでキー操作が効かない場合の対応
Formが非表示でコンテキストメニュをShowで直接表示するような場合、例えばタスクトレイに常駐するアプリケーションでホットキーでコンテキストメニュを出したい要な場合に、キー操作の項目選択が効かなかったり、コンテキストメニュが非アクティブになっても消えなくて困ったので、その時の対応メモ。
少し調べたら、同じような質問でコンテキストメニュ自体がアクティブになってないとあって、正にこれがそのままなのですが、、
具体的には、Showの前にWinApiのSetForegroundWindowを利用して、コンテストメニュのハンドルを渡して全面にしてあげるだけです。
大したコードではないですが、サンプルまで。。
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow (IntPtr hWnd);
・・・
// コンテキストメニュ表示
SetForegroundWindow(contextMenuStrip.Handle);
contextMenuStrip.Show(省略);