2011-02-08 3 views
2

.net 4 WPF KeyDown 이벤트 처리기에서 "추가"키를 누르는 사용자를 감지하고 싶습니다. 사용자 프레스 (내 키보드 레이아웃의 "추가"에 해당하는) + 1 시프트 때Shift + 1을 Key로 검색하십시오 .Add

if (e.Key == Key.Add) 

이 사건을 감지하지 못하는 이렇게하려면 나는 다음 테스트를 사용합니다.
어떻게 감지 할 수 있습니까? 나는

if (e.Key == Key.D1 && Keyboard.Modifiers == ModifierKeys.Shift) 

을 테스트하기가 다른 키보드 레이아웃에 다른 곳에서 매핑 될 수 있으므로 적합한 솔루션임을 확신 아니에요.

제안 사항?

+2

'Key.OemPlus'을 사용해 보셨습니까? –

+0

예, Shift + 1을 눌러도 실행되지 않았습니다. – Marc

+1

가장 명확하게 다른 레이아웃에 매핑됩니다 :) 추가가 작동하지 않으면 간단히 키가 감지되는 것을보고 디버거로 중단하고 키를 누를 때 eventargs를 검사합니다. 어쩌면 교대조가 눌려 졌는지 확인하는 if 블록 안에서만 깰 수 있습니다. –

답변

0

대신 KeyPress 이벤트 처리기를 사용해보십시오.

0
private void trackBarFrames_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyCode) 
    { 
     case Keys.Add : 
      // Nummeric Keypad Add 
      AddSomething(); 
      break; 
     case Keys.Oemplus : 
      // Regular keyboard Add 
      // OemPlus is assigned to the regular keyboard key with a "Add" Sign but doesn not take shift conditions in account..! 
      if (e.Modifiers == Keys.Shift) 
      { 
       AddSomething(); 
      } 
      break; 
    } 
} 
+0

잠시 시간을내어이 코드를 설명해 주시겠습니까? 나중에 읽는 사용자가 나중에 더 잘 이해할 수 있습니다. 질문에 대한 답을 얻으려면 어떻게해야합니까? –

관련 문제