2011-01-20 40 views
1

我在Visual Studio工作2008(框架3.5),我嘗試添加快捷方式(例如 +
d)到MenuStrip中(準確到工具條中的MenuStrip)但我不能。我得到錯誤:C# - 快捷鍵Shift +一些字符不是編譯

"The value of argument 'value' (65604) is invalid for Enum type Keys .

參數名:。值」這表明只是隨着Ctrl鍵Alt鍵 it's OK即使當我試圖按Ctrl ++d那麼它的工作,但不只是和字母。

回答

2

你不能用shift和字母,數字或其他C作爲一個快捷鍵,因爲shift鍵作爲一個modifier - 它就像打字A當你的意思是轉變 + A

編輯:我沒有找到在說,它的文檔任何東西,但在這種question它說,你只能使用CTRLALT結合字母或數字。雖然,你當然可以使用轉變ctrlalt與另一個鍵的任何組合!

+1

謝謝,我忘了使用轉移到大寫字母,但現在it's邏輯爲什麼it's不工作。 – 2011-01-20 10:00:19

0

鍵盤上的shift鍵是modifier key,用於鍵入大寫字母和其他「上」字符。它只能用於與沒有任何替代用法的鍵相結合的快捷方式。

+0

謝謝,現在它有道理 – 2011-01-20 10:01:17

0

您可以覆蓋它。這將讓你使用與其他鍵,如按Ctrl ++標籤按Ctrl +標籤 n個這樣的。我結束了同樣的問題,這是我如何解決我的問題:

public class ExtendedTabControl: TabControl 
{ 
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (keyData == (Keys.Control | Keys.Tab)) 
     { 
      // Write custom logic here 
      return true; 
     } 
     if (keyData == (Keys.Control | Keys.Shift | Keys.Tab)) 
     { 
      // Write custom logic here 
      return true; 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    } 
} 

我希望它能幫助