这似乎微不足道,但我找不到一个干净的算法。
我可以将总行数计算为2186.
然后我以为我做了2186/100 = 21(这将是我的modNr) 然后我想我会在Backgroundworker.reportprocess()中增加currentRowNr ++ 并执行if(currentRowNr%modNr == 0)递增进度条。
进度条现在看起来似乎行为正确,然而它并没有停在100.我得到一个数字超过100的预期。我的算法似乎错了。
必须有一个干净的解决方案,我只是让它过于复杂。谁有数学好处? ; - )
谢谢
答案 0 :(得分:3)
将progessbar的Maximum属性设置为2186,将Minimum属性设置为0.现在,每次处理过一个项目时,都会将进度条的值增加1.除了算法之外,根本不再需要算法。 progessbar将为您处理。
答案 1 :(得分:1)
很明显:2121 = 101 * 21,并且2142,2163,2184也将> 100
这是一个简单的舍入问题 如果你使用2186/100 + 1 = 22作为modNr,你将在最后一次击中时得到99。要获得超精确度,请按照Qua的回答并重新配置进度条。