2010-01-07 3 views
1

그래서 메뉴 항목 (또는 버튼)에 대한 단축키는 num 패드에 Ctrl + 숫자를 사용하고 싶습니다. 가 this.menuItem3.Shortcut = System.Windows.Forms.Shortcut.Alt7; 내가 그렇게 작동하는지 지정할 아니라 NUM 패드 7에 대한 비 NUM 패드 번호 7 작동합니까 :하지만 내가 예를 들어 System.Windows.Forms.ShortcutC# Windows 양식에서 Num pad 단축키를 사용하려면 어떻게해야합니까?

이 작업을 수행 할 수없는 나는 것 같다 num pad에서 (나는 둘 다 작동하는지 상관하지 않는다).

답변

1

비주얼 디자이너에는이를 허용하는 메뉴 항목의 속성에 옵션이 있습니다.

이 속성은 바로 가기 키입니다. num pad 키는 드롭 다운의 옵션입니다.

는 코드 숨김에서 디자이너를 생성 : 당신이 원하는 경우

this.myToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad0))); 

그래서 당신은 쉽게 당신의 코드에서이 자신을 설정할 수 있습니다.

한 가지주의해야 할 점은 Num Lock이 켜져있을 때만 작동한다는 것입니다. 동일한 메뉴 항목에 두 개의 바로 가기 키를 할당 할 수 없다는 것이 확실하기 때문에 Num Lock 꺼져있을 때뿐만 아니라 키 누름 이벤트를 처리해야합니다.

This SO post covers 어떻게 할 수 있습니까? 이 위에서 NumPad0에 맞게 비 Num Lock 키이기 때문에 삽입 (지정과 함께 포스트에서 코드는 다음과 같습니다 응답 다윗

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.Control | Keys.Insert)) 
    { 
     // Call your menu item handler here 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+0

감사합니다 -. 나는 그것을 감사 이의 종류 즉. 내가 할 수있을 것이라고 기대하고 있었다 것은, 그러나, 내가 할 수있는 것을하지 않는 것 같습니다. 내가 가진 속성은 (위와 같이)

System.Windows.Forms.Shortcut Shortcut
입니다, 컨트롤이 System.Windows.Forms.MenuItem입니다. 을 내가 그러나를 오버라이드 (override) 할 수 있었다
ProcessCmdKey
링크 된 게시물에 나와있는 방법과 같습니다. 제대로 작동합니다. 정확히 원하는 것은 아니지만 D 감사합니다 !!! –

관련 문제