我有这个自定义课程
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”。
为什么这没有发生?
在标签上设置文本会使控件无效 - 这意味着它将在下次(有效)处理事件队列时重绘。当您在 UI 线程上休眠时,这种情况不会发生 - 尝试MyBase.Update()在 MyBase.Text = ... 行之后立即添加以强制立即更新。
| 归档时间: |
|
| 查看次数: |
7470 次 |
| 最近记录: |