我一直在寻找一种解决方案来检测在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 ofKeyEventArgs
.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
现在您可以随时测试键盘,包括 KeyPress
事件..
关于c# - 如何检测C#表单中是否按下了多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37881046/