我尝试在循环中同步填充标签连续数字的进度条。但我的标签比进度条早完成。下图显示了这种情况。
我使用第二个线程来完成这个漫长的过程。这是我的测试代码:
Public Class Form1
Dim watek As System.Threading.Thread
Public Sub New()
InitializeComponent()
Control.CheckForIllegalCrossThreadCalls = False
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
watek = New System.Threading.Thread(AddressOf DoSomething)
watek.Start()
End Sub
Private Sub DoSomething()
Dim i As Integer = 0
Dim max As Integer = 10000
ProgressBar1.Maximum = max
ProgressBar1.Step = 1
Do Until i > ProgressBar1.Maximum
ProgressBar1.PerformStep()
Label1.Text = i
i = i + 1
Loop
End Sub
End Class
这是我的问题 - 为什么会这样?为什么进度条不与标签同步?请有人能解释一下吗?如何获得预期的结果?
答案 0 :(得分:3)
你可以在这里做的一件事就是检查进度条的最大值是否在标签中,如果它正在进行,但仍然没有显示该值,因为它应该只是写" this.Refresh(); "这将强制显示UI上的更改。
答案 1 :(得分:1)
进度条总是需要一些"刷新"时间。
您可以将进度条的值设置为一千,它需要大约2秒才能填满该值。
试试这个:
For i = 0 to max
ProgressBar1.PerformStep()
If (i mod 100) = 0 Then
Application.Doevents()
End If
Next
注意:如果编码(Control.CheckForIllegalCrossThreadCalls = False),我不会宽恕你的方式,但那不是 现在问题