を開くとき、Shiftキーを保持しているかどうかを検出するが、ときコンテキストSHIFTキーが押されている場合、私はメニューに特別なオプションを追加したいですメニューが開きます。C#が - 私は、コンテキストメニューを表示したい私のC#アプリケーションでは、コンテキストメニュー
私は現在、SHIFTキーを確認するためにGetKeyState
APIを使用しています。それは私のコンピュータ上で正常に動作しますが、英語以外のWindowsを使用しているユーザは、それが全く機能しないと言います。
私はまた、コンテキストメニューを開いたときのWin32 APIのメニューに示すフラグがEXTENDEDVERBS
を示すべきでありますことをお読みください。 C#ではOpening
イベントのEventArgs
は(私が言うことができるものから)EXTENDEDVERBS
または任意の修飾キーが押された場合を示すプロパティが含まれていません。
// SHIFT KEY is being held down
if (Convert.ToBoolean(GetKeyState(0x10) & 0x1000))
{
_menuStrip.Items.Add(new ToolStripSeparator());
ToolStripMenuItem log = new ToolStripMenuItem("Enable Debug Logging");
log.Click += new EventHandler(log_Click);
log.Checked = Settings.Setting.EnableDebugLogging;
_menuStrip.Items.Add(log);
}
GetKeyStateはそれを行うための正しい方法がある場合は、自分のコードが正しく押されたShiftキーを検出している。
ここで私は「Opening
」イベント内で、今使っているコードですか?
残念ながら、私のコード内のContextMenuの親はUserControlであり、ModifierKeysプロパティはUserContr olまたはContextMenuオブジェクトの場合。 –
@Chris - Jaredは静的だと言っています。私は彼の答えをmsdn –
へのリンクで更新しました。私はそれがインスタンスのプロパティだと思っていました。私はそれをテストします。 –