C#-事件后获取键盘输入

本文关键字:键盘 输入 获取 事件 C#- | 更新日期: 2023-09-27 18:28:47

所以我有一个HCI课程的作业,除了一个部分,我可以解决所有问题。以下是实际问题:

在主窗体上放下一个面板并更改其颜色。当用户输入"r"然后输入数字n将面板向右移动n个像素。如果用户输入"l",然后输入number,n,将面板向左移动n个像素。

我正在努力捕捉第一次击键后的整数。即,在按下"r"之后,我如何才能获得接下来的输入?到目前为止,这是我的事件处理程序:

        private void rightLeftForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode.ToString() == "R")
        {
            //Move panel to the right
        }
        else if (e.KeyCode.ToString() == "L")
        {
            //Move panel to the left
        }
    }

谢谢你的帮助!

C#-事件后获取键盘输入

您可以试着记住用户按下了哪个键"L"或"R",并存储这些信息。下次使用数字键调用密钥处理程序时,您可以根据存储的状态进行操作。

示例:

// enum to store panel movement direction
public enum PanelMovement
{
    None;
    Left;
    Right;
}
// member variable to store last panel movement
private PanelMovement mCurrentMovement = PanelMovement.None;
private void rightLeftForm_KeyDown(object sender, KeyEventArgs e)
{
        if (e.KeyCode.ToString() == "R")
        {
            // store direction after player has pressed "R"
            mPanelMovement = PanelMovement.Right;
        }
        else if (e.KeyCode.ToString() == "L")
        {
           // store direction after player pressed "L" 
           mPanelMovement = PanelMovement.Left;
        }
        // react on number key pressed
        else if(e.KeyCode >= Keys.D1 && e.KeyCode <= Keys.D9)
        {
            if(mPanelMovement == PanelMovement.Left)
               // move panel left
            else if(mPanelMovement == PanelMovement.Right)
              // move panel right
        }
    }