2017-12-18 34 views
0

예를 들어 키보드 프로그램에서 "a"를 클릭하면 잘못된 키 "F8"이 표시됩니다. Diffrent 예 :내 키보드 (C#)를 잘못 감지했습니다.

"1" = "NumPad7" 
"A" = "V" 
"B" = "W" 

문제점이다 :

label.Content = (Key)key; 

그것만 A-Z 및 A-Z 버튼뿐만 작동 (숯)을위한 (키)를 변경하는 경우. 키보드를 올바르게 감지하려면 어떻게해야합니까?

public void Window_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (condition == true) 
     { 
      int key; 
      int keyState; 
      for (key = 0; key < 127; key++) 
      { 
       keyState = GetAsyncKeyState(key); 
       if (keyState == 1 || keyState == -32767) 
       { 
        if(Keyboard.IsKeyDown(Key.LeftShift) || 
        Keyboard.IsKeyDown(Key.RightShift)) 
        { 
         Save_With_Big_Letters(key); 
         label.Content = (Key)key; 
        } 
        else 
        { 
         Save_With_Small_Letters(key); 
         label.Content = (Key)(key + 32); 
        } 
       } 

      } 
     }  
    } 

답변

2

GetAsyncKeyState은 이전의 WindowsForms 키 값을 사용합니다. 이 작업을 수행하려면 System.Windows.Forms.Keys enum을 사용하거나 KeyEventArgs.Key 값만 사용하십시오. 이처럼

:

label.Content = (System.Windows.Forms.Keys)key; 

또는 더 좋은 방법 :

label.Content = e.Key; 
+0

감사합니다! 일하고있어! –

+0

@ DawidSoChiiSokół 작동중인 경우 동일한 문제에 대한 해결책을 찾는 다른 사람들에게 올바른 답으로 설정할 수 있습니다. – rokkerboci