如何检测C#表单中是否按下了多个键

Zak*_*Hat 2 c# forms keyboard key winforms

我一直在寻找一种解决方案来检测C#中是否按下了多个键(我找不到解决方案!)。我有两个玩家玩这个游戏,我需要检测是否按下按键来移动他们。(我正在使用 C# 表单)我只找到了检测是否同时按住两个键的答案,但它们没有帮助。

- 编辑 -

如何使用 KeyPressed (C#) 检测是否按下了某个键

TaW*_*TaW 6

问题的根源在于Winforms根本不支持这个简单的请求。

听起来怪怪的?这是。Winforms 通常非常接近硬件层,虽然有时这可能很有趣,但它也可能只是一个皮塔饼。

((应该注意汉斯的一个隐藏提示:在 中,KeyUp您会被告知哪个键被释放,这样您就可以跟踪任意数量的键..))

但现在有一个直接的解决方案,不需要您保留一堆bools并在KeyDown KeyUp事件中管理它们......:输入Keyboard.IsKeyDown

有了它,这样的代码就可以工作:

使用Keyboard.IsKeyDown来确定某个键是否按下。 e是 的一个实例KeyEventArgs

if (Keyboard.IsKeyDown(Key.Return)) {
    btnIsDown.Background = Brushes.Red; }
...
Run Code Online (Sandbox Code Playgroud)

当然,您也可以检查多个密钥:

if (Keyboard.IsKeyDown(Key.A) && Keyboard.IsKeyDown(Key.W)) ...
Run Code Online (Sandbox Code Playgroud)

唯一的要求是您从以下地方借用WPF

首先:添加命名空间:

using System.Windows.Input;
Run Code Online (Sandbox Code Playgroud)

然后:添加两个对项目的引用:

PresentationCore
WindowsBase
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在您可以随时测试键盘,包括KeyPress事件..