Vb.net 使用定时器的交通灯程序
我试图做一个简单的交通灯模拟,我希望它是这样的情况下,当我按下一个按钮,序列开始,每五秒钟有一个颜色的变化。我使用了三个面板Vb.net 使用定时器的交通灯程序,vb.net,Vb.net,我试图做一个简单的交通灯模拟,我希望它是这样的情况下,当我按下一个按钮,序列开始,每五秒钟有一个颜色的变化。我使用了三个面板 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Panel1.BackColor = Color.White 我知道这是你为一个事件设置的方式,但是在我的程序中,顶部面板开始为红色,其他两个为白色,五秒钟
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Panel1.BackColor = Color.White
我知道这是你为一个事件设置的方式,但是在我的程序中,顶部面板开始为红色,其他两个为白色,五秒钟后,我希望第二个面板变为黄色,五秒钟后,我希望前两个面板变为白色,第三个面板变为绿色。我将如何实现这一点?还有,单击按钮时如何启动该过程?因此,我所做的是创建一个名为LightStatus的枚举,使当前点亮的灯光变量(lsCurrent)在代码中更具可读性 当窗体加载时,它以5000毫秒的间隔设置计时器属性,以便每5秒触发一次已用事件。我在触发器的已用事件中添加了一个处理程序来调用changelightsub。它还将Red传递到SetLight,以便立即点亮Red 单击按钮时,它将启动计时器。触发已过事件时,它运行ChangeLight,将lsCurrent从绿色变为黄色、黄色变为红色或红色变为绿色,并调用SetLight,根据lsCurrent设置面板背景色
Public Class Form1
Dim tmrLight As System.Timers.Timer = New System.Timers.Timer
Dim lsCurrent As LightStatus = LightStatus.Red
Private Enum LightStatus
Red = 1
Yellow = 2
Green = 3
End Enum
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
tmrLight.Interval = 5000
AddHandler tmrLight.Elapsed, AddressOf ChangeLight
SetLight(LightStatus.Red)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
tmrLight.Start()
End Sub
Private Sub ChangeLight()
Select Case lsCurrent
Case LightStatus.Red
lsCurrent = LightStatus.Green
Case LightStatus.Yellow
lsCurrent = LightStatus.Red
Case LightStatus.Green
lsCurrent = LightStatus.Yellow
Case Else
lsCurrent = LightStatus.Red
End Select
SetLight(lsCurrent)
End Sub
Private Sub SetLight(LightColor As LightStatus)
Select Case LightColor
Case LightStatus.Red
Me.pnlRed.BackColor = Color.Red
Me.pnlYellow.BackColor = Color.White
Me.pnlGreen.BackColor = Color.White
Case LightStatus.Yellow
Me.pnlRed.BackColor = Color.White
Me.pnlYellow.BackColor = Color.Yellow
Me.pnlGreen.BackColor = Color.White
Case LightStatus.Green
Me.pnlRed.BackColor = Color.White
Me.pnlYellow.BackColor = Color.White
Me.pnlGreen.BackColor = Color.Green
Case Else
Me.pnlRed.BackColor = Color.Red
Me.pnlYellow.BackColor = Color.White
Me.pnlGreen.BackColor = Color.White
End Select
End Sub
End Class
只需将计时器设置为从1数到3。创建一个将整数作为输入的方法,并在每次递增时从计时器中调用它。如果你把你的逻辑从定时器滴答事件中提取出来,放到一个子例程中,这会更容易。这会起作用的,尽管你应该解释你的逻辑,而不仅仅是转储一块代码作为答案。