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

标签 c# forms winforms keyboard key

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

--编辑--

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

最佳答案

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

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

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

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

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

Uses the Keyboard.IsKeyDown to determine if a key is down. e is an instance of KeyEventArgs.

if (Keyboard.IsKeyDown(Key.Return)) {
    btnIsDown.Background = Brushes.Red; }
...

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

if (Keyboard.IsKeyDown(Key.A) && Keyboard.IsKeyDown(Key.W)) ...

唯一的要求是您从 WPF 借用它:

首先:添加命名空间:

using System.Windows.Input;

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

PresentationCore
WindowsBase

enter image description here

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

关于c# - 如何检测C#表单中是否按下了多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37881046/

相关文章:

Javascript自动计算表格输入框中的字符并在表格数量输入框中输入结果?

javascript - Jquery 对话框不会在表单元素中保持打开状态

javascript - 从表单检索数据(Codeigniter、AJAX)

c# - 将组合框添加到 DataGridView header

C# 如何: transform a range from one array to another

c# - 在 C# 中定义 get 或 set

c# - 如何通过主键和外键(右连接)合并两个数据表?

c# - 加速控件的启用/禁用(C# WinForms)

.net - 如何在devexpress中通过代码触发按钮?

c# - 关闭 winform 应用程序时将对象设置为 null 通常是个好主意吗?