我正在使用Visual Basic中的Windows Forms编写一个Windows桌面应用程序。在这个应用程序中,我想显示一个简单的进度条,但是我遇到了一个奇怪的问题。下面是一个简单的for循环示例,该示例更新进度条:
pBar.Visible = true;
// pBar.Minimum and pBar.Step are both set to 1 using the properties pane in the design page
pBar.Maximum = 100;
for (int j = 0; j < 100; j++) {
double pow = Math.Pow(j, j); //Calculation
pBar.PerformStep();
}
以上代码运行正常,但是我希望能够重置进度条以便稍后使用。我原本以为只需要在 for 循环之后设置
pBar.Value = 1
就可以了,但是奇怪的是这样会破坏进度条的显示。进度条不像之前一样稳步增加,而是根本没有填满。如果我设置 pBar.Value = 50
,进度条就会从中间开始,也不会动了。它的行为好像是 pBar.Value
在 for 循环之前执行,或者在每次循环迭代期间设置了 pBar.Value
(我确保没有错误地将 pBar.Value
语句放在 for 循环内部)。我能想到的唯一原因是,C# 正在异步运行我的 for 循环,值被立即设置,然后由于某种原因没有更新。我尝试寻找解决方法,但目前我找到的都是创建后台程序的方法(我对此不感兴趣),并且我重置进度条的方式应该可以工作...
为什么会出现这种情况?
pBar.Value = 1
,你应该能得到我描述的相同结果。 - ExecutionByFork