我已经开始了一个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;
}
}
答案 0 :(得分:0)
Interval属性仅指定Tick事件之间经过的时间。您可能需要考虑一个单独的变量来跟踪灯光的“状态”,然后在事件处理程序中使用每个“Tick”“碰撞”该变量。然后只需调整UI元素即可反映交通灯的正确状态。你可能有一个“停止”状态,一个“小心”状态和一个“绿色”状态,你的光可能只是在每个嘀嗒声的每个开启之间“循环”。我会留下你写详细信息,因为它似乎是一项任务。祝你好运。
答案 1 :(得分:0)
我想你可能误解了Timer的工作原理。间隔时间过后,Timer.Tick Event将触发。计时器使用间隔来确定在刻度之间运行多长时间。它的值永远不会被Timer改变。实际上,System.Windows.Forms.Timer无法检索已用时间,这意味着您需要自己的状态跟踪机制,而不依赖于此。仔细看看我在上面引用的页面上的示例,确保您了解它是如何工作的,然后再给它一个镜头。