在 C# 中按下多个按键执行不同的事件

Nev*_*rnb 3 c# keypress keydown

private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.W)player1.moveUp(); if (e.KeyCode == Keys.NumPad8) player2.moveUp(); }

在上面的代码中,moveUp 方法基本上只是增加一个值。我想要它,以便两个键可以同时按下(或按住)并且两个事件都会触发。谢谢,内维克

Nay*_*yan 5

获取键盘的状态并检查所需按键的状态。

活动并不是玩游戏的最佳方式。您需要更快的响应。

[DllImport("user32.dll")]
public static extern int GetKeyboardState(byte [] lpKeyState);
...
byte[] bCharData = new byte[256];
GetKeyboardState(bCharData);
Run Code Online (Sandbox Code Playgroud)


另一种方式,从这里采取,

[DllImport("user32.dll")]
static extern short GetKeyState(VirtualKeyStates nVirtKey);
...
public static bool IsKeyPressed(VirtualKeyStates testKey)
{
    bool keyPressed = false;
    short result= GetKeyState(testKey);

    switch (result)
    {
        case 0:
            // Not pressed and not toggled on.
            keyPressed = false;
            break;

        case 1:
            // Not pressed, but toggled on
            keyPressed = false;
            break;

        default:
            // Pressed (and may be toggled on)
            keyPressed = true;
            break;
    }

    return keyPressed;
}
Run Code Online (Sandbox Code Playgroud)


更多链接。

基本上,这些已经可以在网上获得。在询问之前尝试搜索。会更快:)