如何启用在C#这个计时器?(How do I enable this timer in C#?)

2019-08-01 04:26发布

我已经开始了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;

}

}

Answer 1:

Interval属性仅仅指定多少时间标记事件之间经过。 你可能要考虑一个独立的变量来跟踪你的光的“状态”,然后在你的事件处理程序“凸点”,每个“嘀”该变量。 然后,只需调整你的UI元素,以反映交通信号灯的正常状态。 你可能有一个“停止”状态下,“谨慎”的状态,而“绿色”状态,你的光芒也许只是对每个刻度“循环”每个之间。 我将离开你写的细节,因为它似乎是一个任务。 祝好运。



Answer 2:

我想你可能误解了定时器的工作方式。 该Timer.Tick事件时的时间间隔已经过去闪光。 间隔使用的定时器,以确定多长时间刻度之间运行。 它的值永远不会由定时器改变。 事实上,System.Windows.Forms.Timer没有办法找回流逝的时间,这意味着你将需要自己的状态跟踪机制,不依赖于这一点。 快来看看我上面提到的页面上的例子好好看看,并确保你了解它是如何工作的,然后给它一个镜头。



文章来源: How do I enable this timer in C#?