Visual Studio C#Keydown互相阻塞

时间:2016-04-28 16:05:33

标签: c# visual-studio

有没有办法让两个keydowns同时工作,所以他们不会互相阻挡?

    private void multiplayer_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Up)
        {
            //do stuff
        }

        if (e.KeyCode == Keys.Down)
        {
            //do stuff
        }
    }

3 个答案:

答案 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