标签用计时器闪烁

时间:2015-06-29 23:51:18

标签: c# .net winforms events timer

我正试图让一些标签在点击按钮时闪烁。使用当前代码,第一次单击可以正常工作,之后每次单击只能实现闪烁量的一半(白色并返回黑色)。关于如何改进/解决这个问题的任何想法?这是我目前的代码:

private int counter;
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

private void button1_Click_2(object sender, EventArgs e)
{ 
     //Labels start out black, then play a sequence
     //of changing to white and back to black twice
     lb1.BackColor = Color.White;
     lb2.BackColor = Color.White;

     counter = 0;
     timer.Interval = 300; 
     timer.Tick += new EventHandler(TimerElapsed);
     timer.Enabled = true;
     timer.Start(); 
}

void TimerElapsed(object sender, EventArgs e)
{
    if (counter ==2)
    {
        timer.Stop();
        timer.Enabled = false;
        counter = 0;
    }
    else
    {
        if (lb2.BackColor == Color.Black)
        {
            lb1.BackColor = Color.White;
            lb2.BackColor = Color.White;
        }
        else
        {
            lb1.BackColor = Color.Black;
            lb2.BackColor = Color.Black;
        }
        counter += 1;
    }     
}

1 个答案:

答案 0 :(得分:1)

您在每次点击按钮时向Timer.Tick添加事件处理程序。

尝试将行timer.Tick += new EventHandler(TimerElapsed);移出button1_Click_2函数。

当您致电timer.Tick += new EventHandler(TimerElapsed);时,将为Tick事件添加另一个处理程序。单击按钮会导致多个TimerElapsed被触发,这会导致问题。通过将timer.Tick += new EventHandler(TimerElapsed);移到button1_Click_2函数之外,您只需将TimerElapsed分配给事件一次。