标签文本未一一更新 Visual Basic

Dem*_*nes 2 vb.net label

我有这个自定义课程

Public Class labelScroll
    Inherits Label

    Public Shadows Property Text As String
        Get
            Return MyBase.Text
        End Get
        Set(ByVal value As String)
            Dim add As String = ""
            Dim result As String()
            Dim i As Integer
            result = Split(value, vbLf)
            Dim n As Integer = 30
            If (result.Length < n) Then
                n = result.Length
            End If
            Dim start As Integer = result.Length - n
            For i = start To result.Length - 1 Step 1
                add += result(i) + Environment.NewLine
            Next
            MyBase.Text = add
        End Set
    End Property
End Class
Run Code Online (Sandbox Code Playgroud)

我有一个表单,我在上面放置了这个 labelScroll,还放置了一个按钮:我有按钮单击事件的代码:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    LabelScroll1.Text = "1"
    Threading.Thread.Sleep(1000)
    LabelScroll1.Text += "2"
    Threading.Thread.Sleep(1000)
    LabelScroll1.Text += "3"
End Sub
Run Code Online (Sandbox Code Playgroud)

当我点击按钮时,会发生什么,需要 2 秒钟,然后只在三行上显示“1”“2”“3”。实际应该发生的是,当用户单击按钮时,出现“1”,然后Threading.Thread.Sleep(1000)执行,因此程序等待 1 秒,然后在下一行打印“2”。

为什么这没有发生?

Wil*_*l A 5

在标签上设置文本会使控件无效 - 这意味着它将在下次(有效)处理事件队列时重绘。当您在 UI 线程上休眠时,这种情况不会发生 - 尝试MyBase.Update()在 MyBase.Text = ... 行之后立即添加以强制立即更新。