2011-01-20 2 views
1

Я работаю в Visual Studio 2008 (рамочный 3,5), и я пытаюсь добавить ярлык (например сдвиг +
D) в MenuStrip (точно ToolStrip в MenuStrip) но я не могу. Я получаю сообщение об ошибке: ИмяC# - ярлык Shift + некоторые символы не компиляции

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

параметров:.. Значение»Это показывает только с Сдвига С Ctrl, Alt подмигнули ОК Даже когда я попытался Ctrl + Сдвиг +. D тогда работал, но не только с сдвига и письма.

ответ

2

Вы не можете использовать сдвиг и букву, цифру или другой гр как клавиша быстрого доступа, так как клавиша смены работает как modifier - это будет похоже на ввод A, если вы действительно имели в виду Смещение + A.

EDIT: Я не нашел ничего в документации, сообщившей, но в этом question он заявил, что вы можете использовать только Ctrl или альт в сочетании с буквой или цифрой. Хотя, конечно, вы можете использовать shift с ctrl или alt в любой комбинации с другим ключом!

+1

Спасибо, я забыл об использовании перехода к прописных букв, но теперь подмигнули логические почему подмигнули не работает. –

0

Клавиша переключения - это modifier key на клавиатуре, которая используется для ввода заглавных букв и других альтернативных «верхних» символов. Он может использоваться только для ярлыков в сочетании с ключами, которые не имеют альтернативных способов использования.

+0

Спасибо, теперь это имеет смысл –

+0

Но я думаю, что 'Ctrl' и' Alt' также являются модификаторами. Так что «D» отклоняется (как слишком просто). –

0

Вы можете переопределить его. Это позволит Вам использовать Shift, с другими клавишами, как Ctrl + Сдвиг + Tab или Ctrl +вкладке п такие. Я в конечном итоге с той же проблемой, и это, как я решить мою проблему:

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); 
    } 
} 

Я надеюсь, что это помогает