我的键盘检测不好(C#)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的键盘检测不好(C#)相关的知识,希望对你有一定的参考价值。

为什么当我点击我的键盘程序中的“a”似乎是坏键“F8”。不同的例子:

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

问题在于:

label.Content = (Key)key;

当我更改(键)for(char)时,它可以工作但仅适用于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);
                    }
                }

            }
        }     
    }
答案

GetAsyncKeyState使用较旧的WindowsForms键值。要使这项工作,要么使用System.Windows.Forms.Keys枚举,要么只使用KeyEventArgs.Key值。

像这样:

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

或者更好的方式:

label.Content = e.Key;

以上是关于我的键盘检测不好(C#)的主要内容,如果未能解决你的问题,请参考以下文章

检测后退按钮但不关闭对话框片段

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

c语言 获取鼠标键盘事件

Android:使用Tab检测单个片段viewpager

obj -c IOS检测大写锁定按键事件

如何在不按 Enter C# WPF 的情况下检测我的键盘