2012-12-14 172 views
8

我希望爲正在開發的程序(使用C#.net)創建一個序列快捷方式來訪問菜單系統中的各種按鈕。菜單的鍵盤序列快捷鍵

例如: Ctrl鍵 + W¯¯ö

首先,用戶將按下Ctrl鍵 + W¯¯,隨後ö

視覺工作室使用此方法的相當一部分菜單快捷方式。

當我不過編輯菜單,我僅限於一個快捷按Ctrl +W¯¯或只是Ø,我不能排序它們。

這可能與現有的框架?

回答

2

只要你可以這樣做:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (previousKeyEvent != null) 
    { 
    if (previousKeyEvent.Modifiers == Keys.Control && previousKeyEvent.KeyCode == Keys.W && e.KeyCode == Keys.O) 
    { 
     MessageBox.Show("Ctrl + W then O"); 
    } 
    else 
    { 
     MessageBox.Show("Not handled"); 
     previousKeyEvent = null; 
    } 
    else 
    previousKeyEvent = e; 
    } 
} 

需要考慮的事情

  • 單組合鍵 - 處理那些沒有 在前關鍵事件的範圍。
  • 用於顯示您正在等待 用戶輸入的標籤,就像visual studio一樣。
  • 使用ShortCutKeyDisplayString屬性顯示菜單項旁邊的自定義快捷方式。
+0

不幸的是,這將需要更多的努力來實施比我願意。然而,我會考慮,如果不是,在菜單中,這不會顯示爲鍵盤快捷鍵。 – Randomman159

+0

@ Randomman159如果你不願意努力達到你需要做的事情 - 作爲一名開發人員,你可能不會爲你自己設定的許多任務而走得太遠。 – LukeHennerley

+0

這不是我的意思。我會嘗試重述。 此問題的優先級之一是在菜單中的項目旁邊顯示襯衫剪裁,所以當用戶重複使用它時,他們將有快捷方式供他們查看。作爲你的解決方案,不包括這個優先權,如果我實施它,它只會是暫時的。鑑於需要大量(非常大)的組合密鑰,對於臨時解決方案來說,它似乎是一項非理想的工作量。 但是,如果有一種方法可以在運行時修改菜單中顯示的快捷方式,那麼這種解決方案將非常棒。 – Randomman159