如何使标签闪烁

Eat*_*aik 4 vb.net timer winforms

Stopwatch我的表单中有一个以格式Interval = 1000显示的hh:mm:ss

到达第五秒时,应该开始将标签背景闪烁为绿色,但到目前为止,我只能使背景颜色变为绿色,而不会闪烁。

这就是我将背景色变为绿色的方式:

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
Run Code Online (Sandbox Code Playgroud)

如何使标签闪烁?

Bug*_*ugs 5

您可以使用一种简单的Async方法来执行此操作。

以下代码将产生Label1闪烁效果。由于我们已经使用While True过,一旦您点击“ 00:00:05”,此操作将无限期继续。

Private Async Sub Flash()
    While True
        Await Task.Delay(100)
        Label1.Visible = Not Label1.Visible
    End While
End Sub
Run Code Online (Sandbox Code Playgroud)

您可以在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
Run Code Online (Sandbox Code Playgroud)

如果您只想闪烁几次,我们可以对以下内容进行简单的更改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
Run Code Online (Sandbox Code Playgroud)

通过将数字10更改为您选择的数字,可以缩短或延长闪光时间。我在循环Label1.Visible = True 之后添加了For以确保Label闪烁完成后看到的内容。

您将需要导入System.Threading.Tasks才能使用Task.Delay