2017-12-18 18 views
0

キーボードのプログラムで「a」をクリックすると、キー「F8」が間違っているように見えます。 切り抜い例:私は(CHAR)のために(キー)を変更すると、それが唯一-Zと-Zキーのためではなく、動作私のキーボードの不正な検出(C#)

label.Content = (Key)key; 

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

問題はです。キーボードを正しく検出するにはどうしたらいいですか?

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

関連する問題