我想要执行以下操作:使用计时器label2正在下降,但我想按下空格时标签上升,当我释放它时标签再次下降,直到我再次按空格,我这样写,但它一直在下降:
int step = 5;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Space:
step = -5;
break;
}
}
private void timer3_Tick(object sender, EventArgs e)
{
label2.Location = new Point(label2.Location.X, label2.Location.Y + step);
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Space:
step = 5;
break;
}
}
答案 0 :(得分:2)
听起来你的事件没有连线。单击设计器中的表单,然后查看Properties
窗口。然后单击闪电,它会将您带到“事件”窗格。
如果KeyDown
旁边没有任何内容,则按键时不会调用Form1_KeyDown
方法。单击空格并选择在KeyDown
事件触发时将调用的方法。
如果表单上还有其他控件,您可能还需要启用KeyPreview
。这告诉窗体在另一个控件具有焦点时响应按键。
答案 1 :(得分:0)
您需要正确连接KeyDown事件
试试这个:
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);