【问题标题】:VB - progress bar not incrementing correct amounts?VB - 进度条没有增加正确的数量?
【发布时间】:2014-01-01 20:44:40
【问题描述】:

我有一个包含一些变量的程序。我正在尝试交互变量,并通过使用它们来增加进度条,使它们显示时间的视觉视角。

代码的再现:

Dim count As Integer = ListBox1.Items.Count
Dim _toProgress As Integer = 100 / count
ProgressBar1.Increment(_toProgress)

我把这一切都放在一个循环中,所以在一个过程(循环中)完成后添加“_toProgress”......

这基本上是我简化的代码。 问题是当我增加进度条时,它在它应该完成之前完成了。

例如: 我有一个循环完成 175 过程: 100 / 175 = 0.5714285714285714 所以,_toProgress 应该等于 '0.5714285714285714'。 完成其中一个进程后,它会将“_toProgress”添加到增量中 (ProgressBar1.Increment(_toProgress))。

我知道 '_toProgress' 整数是正确的,因为 '0.5714285714285714' * 175 = 100。

所以我不知道为什么进度条在它应该完成之前完成,有什么线索吗?

【问题讨论】:

  • 这可能是因为 _toProgress 是整数而不是双精度数。整数永远是整数。
  • 正如@Andrew 所说,将 _toProgress 的声明更改为加倍。
  • 这很有意义。谢谢安德鲁。
  • 这里有不止一个缺陷。如果您只进步了一点并且只在列表框中添加了 one 项,那么您将增加 100。简单的方法是 ProgressBar1.Value = 100 * count / 175。Increment() 方法没有什么特别之处,它并没有让它“更好”。

标签: vb.net


【解决方案1】:

您只能以整数增量递增 ProgressBar。

最简单的解决方案是将 ProgressBar 的 Maximum 属性更改为您拥有的进程数,然后递增 1。

例如:

ProgressBar1.Maximum = ListBox1.Items.Count
ProgressBar1.Increment(1)

【讨论】:

  • 我正在考虑这样做,我认为按照我最初建议的方式增加它会更优雅,看起来更现实。谢谢。
  • @user3102516:嗯,问题是你只能以整数块递增,所以在很多情况下,当发生某些事情时,进度条实际上并没有更新。通过递增 1,进度条将为计数中的每个项目平滑而准确地更新。我认为这种方法实际上会比原来的提议看起来更自然和优雅。
  • 你是对的。无论是 1 还是 100/listbox.items.count,它仍然以相同的数量递增。所以无论哪种方式看起来都一样,非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多