VB.NET 进度条

标签 vb.net for-loop progress-bar

这个问题在这里已经有了答案:




8年前关闭。




Possible Duplicate:
.NET progressbar not updating



我构建了一个进度条类,用于显示我的 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

这是我在 for 循环中使用它的方法:
Dim pb As New ProgressBar
pb.ProgressBarSetup(5000, "Test")

For i As Integer = 0 To 5000 - 1
      pb.IncProg()
Next

问题是视觉问题。它最多完成整个进度条的 70-85%,然后关闭。关闭时,进度条值和最大值相等,但进度条仅填充到其长度的四分之三左右。

我尝试使用 progressBar.Refresh() 而不是 Application.DoEvents() 但它大大减慢了进度 - 并且仍然给我相同的结果。

有没有其他方法可以实现更好的视觉吸引力的进度条?

最佳答案

在 Windows 7 上看到这种效果是正常的。问题是当你将一个值设置为 X 时,它会在接下来的 0.5-1 秒内滑动到这个位置。因此,如果您的操作发生得很快,您只会在 50-80% 时看到它。解决方案是先设置一个更高的值,然后再减少到你想要的值。像这样的东西:

progressBar.Value += 2
progressBar.Value -= 1

并且不要忘记临时增加最大值,否则您可能会遇到异常,例如,当从 4999 增加到 5000 时(您不能设置为 5001)。

关于VB.NET 进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217894/

相关文章:

vb.net - 如何使用 vb.net 替换文本框上的字母

r - 处理 "Error in x[, 1] : incorrect number of dimensions"

java - 如何拆分字符串序列并将每个元素转换为 double

ios - 如何显示带有逆时针动画的自定义圆形进度条?

javascript - 如何创建一个循环进度条,我可以将总金额从 100% 更改为任何其他值?

c# - 在捕获中仅使用 "throw"是否有好处?

sql - 标签 'N' 已被声明。标签名称在查询批处理或存储过程中必须是唯一的

c# - 1 个解决方案中的 VB.Net 和 C# 项目

java - 从循环内调用的方法跳出 for 循环

android - 如何在android中创建像图片中的布局?