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

C#-事件后获取键盘输入,c#,visual-studio-2010,events,input,keyboard,C#,Visual Studio 2010,Events,Input,Keyboard,所以我有一个HCI课程的作业,除了一部分,我什么都懂。以下是实际问题: 在主窗体上放置一个面板并更改其颜色。当用户输入“r”,然后输入 数字n将面板向右移动n个像素。如果用户输入“l”,然后输入 数字n,将面板向左移动n个像素 我正在努力的是在第一次击键后捕获整数。i、 例如,在按下“r”之后,我如何才能获得接下来的输入?以下是迄今为止我的事件处理程序: private void rightLeftForm_KeyDown(object sender, KeyEventArgs

所以我有一个HCI课程的作业,除了一部分,我什么都懂。以下是实际问题:

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

我正在努力的是在第一次击键后捕获整数。i、 例如,在按下“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
        }
    }

谢谢你的帮助

您可以尝试记住用户按下了哪个键“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
        }
    }
//存储面板移动方向的枚举
公共枚举小组运动
{
没有一个
左边
正确的;
}
//存储上次面板移动的成员变量
private PanelMovement mCurrentMovement=PanelMovement.None;
私有void rightlefform_KeyDown(对象发送方,KeyEventArgs e)
{
if(例如KeyCode.ToString()=“R”)
{
//在播放器按下“R”后存储方向
mPanelMovement=面板移动。右;
}
else if(例如KeyCode.ToString()=“L”)
{
//播放器按下“L”后存储方向
mPanelMovement=面板移动。左;
}
//按数字键时作出反应

else if(e.KeyCode>=Keys.D1&&e.KeyCode在此代码中,您在哪里检查
char.IsDigit或char.IsNumber
?有几种方法可以执行for循环并检查每个字符。如果您不想执行循环,请在if语句
if(char.IsNumber(e.KeyChar)中尝试类似的操作{那么你知道这是一个输入的数字}