我要做的是当我按下按钮时它应该向右移动,直到它到达标签的左侧。在我的情况下,按钮只是消失了。可能是什么解决方案?
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = !timer1.Enabled;
}
private void timer1_Tick(object sender, EventArgs e)
{
for (int i = 0; i < label1.Left; i++)
{
button1.Left += i;
}
}
答案 0 :(得分:2)
private void timer1_Tick(object sender, EventArgs e)
{
if (button1.Left < label1.Left)
{
button1.Left++;
}
}
答案 1 :(得分:1)
当计时器滴答时,它将循环for循环一次(调用timer1_Tick)并将其移动到((button1.Left + label1.Left)* numberOfTicks)。
您拥有的代码与编写代码几乎相同:
button1_Click(object s, EventArgs e){
timer1.Tick += delegate(object sender, EventArgs ev){
button1.Left += label1.Left;
};
timer1.Enabled = true;
}
如果你想使用定时器移动它,你必须设置一个间隔,每次定时器滴答时,移动几个像素,而不是所有像素。
类似的东西:
const int DISTANCE = 1;
void button1_Click(object s, EventArgs e){
timer1.Enabled = true;
}
void timer1_Tick(object s, EventArgs e){
if(button1.Left < label1.Left)
button1.Left += DISTANCE;
}