C#-事件后获取键盘输入
所以我有一个HCI课程的作业,除了一部分,我什么都懂。以下是实际问题: 在主窗体上放置一个面板并更改其颜色。当用户输入“r”,然后输入 数字n将面板向右移动n个像素。如果用户输入“l”,然后输入 数字n,将面板向左移动n个像素 我正在努力的是在第一次击键后捕获整数。i、 例如,在按下“r”之后,我如何才能获得接下来的输入?以下是迄今为止我的事件处理程序: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
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)中尝试类似的操作{那么你知道这是一个输入的数字}