按下按钮悬停

时间:2013-11-13 06:49:12

标签: c# winforms timer

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

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

2 个答案:

答案 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;
}