0

我必须做的是,当我按下按钮时,它应该向右移动,直到它到达标签的左侧。在我的情况下,按钮就消失了。解决方案可能是什么?

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;
    }
}
4

2 回答 2

2
 private void timer1_Tick(object sender, EventArgs e)
    {
        if (button1.Left < label1.Left)
        {
            button1.Left++;
        }

    }
于 2013-11-13T06:58:02.087 回答
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;
}
于 2013-11-13T06:57:38.823 回答