我已经找到了一个解决方案来检测是否在 C#中按下了多个键(我找不到解决方案!)。 我有两个玩家的游戏,我需要检测是否按下一个键来移动它们。 (我正在使用C#表单) 我只找到了答案来检测两个键是否同时被按下而且没有帮助。
- 编辑 -
如何使用KeyPressed(C#)检测是否按下了某个键
答案 0 :(得分:2)
问题的根源在于Winforms下根本不支持这个简单的请求。
听起来很奇怪?它是。 Winforms经常痛苦地靠近硬件层,虽然这有时候很有趣,但它也可能只是一个皮塔饼......
((Hans应该注意一个隐藏的提示:在KeyUp
中你会被告知哪个键被释放,所以你可以跟踪你想要的任意数量的键......)
但是现在有一个直接的解决方案,它要求你保留一堆bools
并在KeyDown
和 {{1}中管理它们} events ..:输入Keyboard.IsKeyDown。
有了这样的代码:
使用
KeyUp
确定密钥是否已关闭。Keyboard.IsKeyDown
是e
的一个实例。KeyEventArgs
当然你也可以使用多个密钥:
if (Keyboard.IsKeyDown(Key.Return)) {
btnIsDown.Background = Brushes.Red; }
...
唯一的要求是你从if (Keyboard.IsKeyDown(Key.A) && Keyboard.IsKeyDown(Key.W)) ...
借用它:
首先:添加命名空间:
WPF
然后:添加两个对项目的引用:
using System.Windows.Input;
现在您可以随时测试键盘,包括PresentationCore
WindowsBase
事件..
答案 1 :(得分:0)
也许打印到控制台......
if (Input.GetKeyDown(KeyCode.G)) {print ("G key pressed");}
答案 2 :(得分:-1)
您可以使用程序级键盘钩子来实现它。您可以在user32.dll中使用Win-API函数,如 SetWindowsHookEx 。
以下是一些例子:
A Simple C# Global Keyboard Hook
Global keyboard capture in C# application