在我的C#應用程序中,我想顯示一個上下文菜單,但是我想向菜單添加特殊選項,如果在上下文時按住SHIFT鍵菜單打開。我正在用GetKeyState
API檢查SHIFT鍵。它可以在我的電腦上正常工作,但使用非英語Windows的用戶表示完全無法使用它們。C# - 檢測是否在打開上下文菜單時保持SHIFT鍵
我還讀到在Win32 API中打開上下文菜單時,有一個標誌指示菜單中應顯示EXTENDEDVERBS
。在C#中,EventArgs
對於Opening
事件不包含(從我所知道的)屬性指示EXTENDEDVERBS
或者是否有任何修飾鍵被按下。
這裏是我現在使用「Opening
」事件中的代碼:
// 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鍵被按下?
遺憾的是,文本菜單在我的代碼父母是用戶控件和ModifierKeys屬性是不可用時爲UserContr ol或ContextMenu對象。 – 2009-06-10 05:06:58
@Chris - Jared說這是靜態的。我更新了他的答案,並附有msdn – 2009-06-10 05:20:10