如何在C#中启用此计时器?

时间:2012-10-05 23:00:24

标签: c# timer sequence

我已经开始了一个c#课程,我不能让我的计时器运行。它可能非常简单,我在这里错过了一些东西。基本上我有一个按钮来启动和停止红绿灯序列。我希望间隔1秒。这是我写的。按下开始时,它无法正常工作。谢谢。

 }
    public int counter = 0;

private void rbStart_CheckedChanged(object sender, EventArgs e)
{

    counter++;

    if (counter == 1)
    {
        pbRed.Visible = true;
        pbAmber.Visible = false;
        pbGreen.Visible = false;
    }
    else if (counter == 2)
    {
        pbRed.Visible = true;
        pbAmber.Visible = true;
        pbGreen.Visible = false;
    }
    else if (counter == 3)
    {
        pbRed.Visible = false;
        pbAmber.Visible = false;
        pbGreen.Visible = true;
    }
    else if (counter == 4)
    {
        pbRed.Visible = false;
        pbAmber.Visible = true;
        pbGreen.Visible = false;
    }
    else if (counter == 5)
    {
        pbRed.Visible = true;
        pbAmber.Visible = false;
        pbGreen.Visible = false;
    }
    else
    {
        counter = 0;
    }
}

private void rbStop_CheckedChanged(object sender, EventArgs e)
{

    pbRed.Visible = false;
    pbAmber.Visible = false;
    pbGreen.Visible = false;
}

private void Form1_Load(object sender, EventArgs e)
{
    Light_timer.Tick += new EventHandler(rbStart_CheckedChanged);
    Light_timer.Interval = 1000;

}

}

2 个答案:

答案 0 :(得分:0)

Interval属性仅指定Tick事件之间经过的时间。您可能需要考虑一个单独的变量来跟踪灯光的“状态”,然后在事件处理程序中使用每个“Tick”“碰撞”该变量。然后只需调整UI元素即可反映交通灯的正确状态。你可能有一个“停止”状态,一个“小心”状态和一个“绿色”状态,你的光可能只是在每个嘀嗒声的每个开启之间“循环”。我会留下你写详细信息,因为它似乎是一项任务。祝你好运。

答案 1 :(得分:0)

我想你可能误解了Timer的工作原理。间隔时间过后,Timer.Tick Event将触发。计时器使用间隔来确定在刻度之间运行多长时间。它的值永远不会被Timer改变。实际上,System.Windows.Forms.Timer无法检索已用时间,这意味着您需要自己的状态跟踪机制,而不依赖于此。仔细看看我在上面引用的页面上的示例,确保您了解它是如何工作的,然后再给它一个镜头。