有没有办法让两个keydowns同时工作,所以他们不会互相阻挡?
private void multiplayer_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
{
//do stuff
}
if (e.KeyCode == Keys.Down)
{
//do stuff
}
}
答案 0 :(得分:2)
您可能遇到密钥重复问题。如果是这种情况,向下只会触发按下的最后一个键。您需要做的是使用KeyDown,KeyUp和Deactivate控制状态,以及具有执行实际工作的计时器。计时器将控制你的游戏循环的速度。运行...对于我的例子,我只启用了计时器并将间隔设置为10.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
0, 10
0, (1-9, 2-10, 3-11)
1, (4-1, 5-7)
2, (4-4, 5-3, 6-5)
3, (5-1, 6-4)
4, (7-9, 8-14, 5-3)
5, (7-4, 8-5, 9-9, 6-2)
6, (8-2, 9-2)
7, (10-3)
8, (10-2)
9, (10-5)
答案 1 :(得分:0)
您可以通过以下方式处理一些按键组合:
if (e.Control && e.KeyCode == Keys.K) {
//Your code here
}
但它需要按下一些特殊键(例如,Alt',
控制,
Shift等等。)
答案 2 :(得分:0)
使用ThreadPool.QueueUserWorkItem
执行非阻塞工作,但如果您尝试从工作线程更新UI,则需要小心。如果您使用的是WinForms,则可能还需要查看Control.Invoke
。