我的表单中有一个Stopwatch
,其中Interval = 1000
以hh:mm:ss
格式显示。
当它达到第5秒时,应该开始将标签背景闪烁为绿色但到目前为止我只能使背景颜色变为绿色而没有任何闪光。
这就是我将背景颜色变为绿色的方式:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = SW.Elapsed.ToString("hh\:mm\:ss")
If Label1.Text = "00:00:05" Then
Label1.BackColor = Color.Green
End If
End Sub
如何使标签闪烁?
答案 0 :(得分:4)
您可以使用简单的Async
方法执行此操作。
以下代码将为Label1
提供闪烁的效果。由于我们使用了While True
,因此一旦你点击了#00; 00:00:05"这将会无限期地继续下去。
Private Async Sub Flash()
While True
Await Task.Delay(100)
Label1.Visible = Not Label1.Visible
End While
End Sub
您可以在Timer1_Tick
方法中调用此方法:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = SW.Elapsed.ToString("hh\:mm\:ss")
If Label1.Text = "00:00:05" Then
Label1.BackColor = Color.Green
Flash()
End If
End Sub
如果你只想闪几次,我们可以对Flash()
进行简单的更改:
Private Async Sub Flash()
For i = 0 To 10
Await Task.Delay(100)
Label1.Visible = Not Label1.Visible
Next
'set .Visible to True just to be sure
Label1.Visible = True
End Sub
通过将数字10更改为您选择的数字,您可以缩短或延长闪光所需的时间。我在Label1.Visible = True
循环后添加了For
,只是为了确保我们在闪烁完成后看到Label
。
您必须导入
System.Threading.Tasks
才能使用Task.Delay
。
答案 1 :(得分:1)
您需要一个标签、两个文本框和一个按钮。 屏幕允许您“设置”几种颜色 - 这可以通过添加错误颜色、警告颜色(您尚未填写字段...?)等进一步进行。 在实际应用程序中,这种颜色选择将由管理员在单独的屏幕上完成,并存储在数据库中。 定时器频率也将在管理屏幕/功能中设置。 这个特定的屏幕需要双击文本框,并为每个文本框选择一种颜色。 每个盒子的背景颜色都会改变。然后按开始按钮。 如果你再次按下开始按钮,它会切换计时器(开/关)
公开课表1 Private Sub Form1_Load(sender As Object, e As EventArgs) 处理 MyBase.Load ' 不太适合我想要的,但关闭... ' https://bytes.com/topic/visual-basic-net/answers/368433-blinking-text Me.Label1.Text = "一个闪烁的文本框" Me.Label1.BackColor = TextBox2.BackColor 结束子
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If Me.Label1.BackColor = TextBox2.BackColor Then
Me.Label1.BackColor = TextBox1.BackColor
Else
Me.Label1.BackColor = TextBox2.BackColor
End If
End Sub
Private Sub TextBox1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles TextBox1.MouseDoubleClick
Dim dlg As New ColorDialog()
If dlg.ShowDialog() = DialogResult.OK Then
TextBox1.BackColor = dlg.Color
End If
End Sub
Private Sub TextBox2_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles TextBox2.MouseDoubleClick
Dim dlg As New ColorDialog()
If dlg.ShowDialog() = DialogResult.OK Then
TextBox2.BackColor = dlg.Color
End If
End Sub
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
Timer1.Enabled = Not Timer1.Enabled
End Sub
结束课程
答案 2 :(得分:0)
尝试在Timer1_Tick事件处理程序中添加类似的内容 -
Label1.Visible = Not Label1.Visible
将计时器设置为启用,它将完成工作。
答案 3 :(得分:0)
如果您在文本 00:00:05 时指定颜色,那么您还应指定文本为其他内容时Backcolor
应该是什么,即 00: 00:06
试试这个,看它是否有效:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = SW.Elapsed.ToString("hh\:mm\:ss")
If Label1.Text = "00:00:05" Then
Label1.BackColor = Color.Green
else
Label1.Backcolor = Color.Yellow '(Change color as needed)
End If
End Sub