あらかじめ日記

雑記とかブログで使えるスクリプトとかテクニックとか。その他、音楽やアニメ、漫画の話題とかも。

【C#】コンテキストメニュでキー操作が効かない場合の対応

Formが非表示でコンテキストメニュをShowで直接表示するような場合、例えばタスクトレイに常駐するアプリケーションでホットキーでコンテキストメニュを出したい要な場合に、キー操作の項目選択が効かなかったり、コンテキストメニュが非アクティブになっても消えなくて困ったので、その時の対応メモ。

 少し調べたら、同じような質問でコンテキストメニュ自体がアクティブになってないとあって、正にこれがそのままなのですが、、
具体的には、Showの前にWinApiSetForegroundWindowを利用して、コンテストメニュのハンドルを渡して全面にしてあげるだけです。

大したコードではないですが、サンプルまで。。

[DllImport("user32.dll")]
public static extern bool SetForegroundWindow (IntPtr hWnd);

・・・

// コンテキストメニュ表示
SetForegroundWindow(contextMenuStrip.Handle);
contextMenuStrip.Show(省略);