C#中KeyDown()的简单但棘手的问题#

时间:2012-11-29 00:19:12

标签: c# events

我正在用精灵做一个小游戏,角色根据按下的键移动(箭头)。我注意到.KeyDown()方法一直被调用,直到释放任何键。

e.g。当用户按下向上箭头时,.KeyDown()的方法不断被调用。如果按下向下箭头,仍然按下向上箭头,KeyEventArgs现在从向下箭头接收输入。最后,当向上箭头被释放时,.KeyDown()事件将停止被称为,即使仍然按下向下箭头。

如何“重置”输入并告诉编译器继续调用.KeyDown()

2 个答案:

答案 0 :(得分:3)

一个非常好的问题 - 我不相信有任何方法可以覆盖这种默认行为,但是通过跟踪自己的按键来确保可以避免这种影响 - 即,当.KeyDown()是调用,将键添加到跟踪它的某种类型的结构中 - 然后,当调用.KeyUp()时,从该结构中删除键。

然后,只需反复检查当前按下的键的结构,并使您的移动基于 ,而不是.KeyDown()告诉您的。

答案 1 :(得分:0)

您可以尝试使用KeyUp来检测密钥何时被释放。然后,您可以假设在调用KeyUp之前仍然按下该键。