[英]Bad detection of my keyboard(C#)
為什么當我在鍵盤程序上單擊“ a”時似乎出現了錯誤的鍵“ F8”。 不同的例子:
"1" = "NumPad7"
"A" = "V"
"B" = "W"
問題出在:
label.Content = (Key)key;
當我為(char)更改(Key)時,它可以工作,但僅適用於z和AZ鍵。 如何正確檢測鍵盤?
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);
}
}
}
}
}
GetAsyncKeyState
使用較舊的WindowsForms鍵值。 為此,可以使用System.Windows.Forms.Keys
枚舉,也可以只使用KeyEventArgs.Key
值。
像這樣:
label.Content = (System.Windows.Forms.Keys)key;
或更好的方法:
label.Content = e.Key;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.