c# - 使用具有更改间隔的表单计时器
问题描述
WindowsForm C#中的交通灯模拟
我的问题是如何为红灯和绿灯设置计时器 30 秒,为黄灯设置 5 秒?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
redLight.Visible = true;
yellowLight.Visible = false;
greenLight.Visible = false;
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void greenLight_Click(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
if (redLight.Visible == true)
{
redLight.Visible = false;
yellowLight.Visible = true;
greenLight.Visible = false;
}
else if (yellowLight.Visible == true)
{
redLight.Visible = false;
yellowLight.Visible = false;
greenLight.Visible = true;
}
else if(greenLight.Visible == true)
{
redLight.Visible = true;
yellowLight.Visible = false;
greenLight.Visible = false;
}
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
}
解决方案
您可以像下面的代码一样使用计时器类。黄色没有逻辑,因为我不知道黄色和红色之间需要多少时间,这将是您解决的一个很好的例子。
public partial class Form1 : Form
{
static System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
public Form1()
{
InitializeComponent();
redLight.Visible = true;
yellowLight.Visible = false;
greenLight.Visible = false;
myTimer.Tick += new EventHandler(timer1_Tick);
myTimer.Interval = 30000;
myTimer.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (redLight.Visible == true)
{
myTimer.Interval = 5000;
redLight.Visible = false;
yellowLight.Visible = true;
greenLight.Visible = false;
}
else if (yellowLight.Visible == true)
{
redLight.Visible = false;
yellowLight.Visible = false;
greenLight.Visible = true;
}
else if(greenLight.Visible == true)
{
myTimer.Interval = 30000;
redLight.Visible = true;
yellowLight.Visible = false;
greenLight.Visible = false;
}
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
}
推荐阅读
- c++ - QT项目和USB连接
- python-3.x - 访问数据框列中的子字符串以创建新列
- c - 仅将文本的一部分放入数组
- r - 错误调试:使用 cbind 将列移动到另一个数据框中
- javascript - Firebase 云消息传递的正则表达式
- javascript - 删除外部对象中的对象不起作用
- laravel - 使用 Laravel 8 从 Redis 中删除延迟的作业
- spring-boot - spring-data-jpa hibernate:无法延迟初始化集合,无法初始化代理 - 没有会话
- android - MAPBOX:当我运行没有错误的应用程序时,地图没有出现(在 Kotlin 中开发 - 用于 android - 片段中的地图)
- regex - 如何在正则表达式中只允许 WhatsApp 格式的数字?