Ale*_*lex 7 vb.net for-loop progress-bar
可能重复:
.NET进度条未更新
我构建了一个进度条类,显示了for循环中的进度.这是进度条类的代码:
Public Class frmProgress
Private Sub frmProgress_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
progressBar.Minimum = 0
End Sub
Public Sub ProgressBarSetup(ByRef Maximum As Integer, ByRef Title As String)
progressBar.Maximum = Maximum
progressBar.Value = 0
Me.Text = Title
Me.Show()
End Sub
Public Sub IncProg()
progressBar.Value += 1
Application.DoEvents()
If progressBar.Value = progressBar.Maximum Then
Me.Close()
End If
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
以下是我在for循环中使用它的方法:
Dim pb As New ProgressBar
pb.ProgressBarSetup(5000, "Test")
For i As Integer = 0 To 5000 - 1
pb.IncProg()
Next
Run Code Online (Sandbox Code Playgroud)
问题是视觉问题.它完成最多70-85%的完整进度条,然后关闭.关闭时,进度条值和最大值相等,但条形仅填充到其长度的大约四分之三.
我尝试使用progressBar.Refresh()而不是Application.DoEvents(),但它会大大减慢进度 - 并且仍然给我相同的结果.
有没有其他方法可以实现更好的视觉吸引力进度条?
Neo*_*isk 13
在Windows 7上看到此效果是正常的.问题是当您将值设置为X时,它会在接下来的0.5-1秒内滑动到此位置.因此,如果您的行动发生得很快,您只会看到满50-80%.解决方案是首先设置为更高的值,然后递减到您想要的值.像这样的东西:
progressBar.Value += 2
progressBar.Value -= 1
Run Code Online (Sandbox Code Playgroud)
并且也不要忘记临时增加最大值,或者您可能会遇到异常,例如,当从4999增加到5000时(您不能设置为5001).
| 归档时间: |
|
| 查看次数: |
27838 次 |
| 最近记录: |