我有一个进度条,最小为0,最大值为100。如果我将它增加33,它将以99/100结尾,但当我循环它时,它尝试将33添加到99,即使我在每个循环后将进度条的值设置为0,但我还是超出了异常范围。有人能提出解决这个问题的办法吗?
private void WorkProgress1(int progress)
{
pbProgress.Value = progress;
}
private void DoWork()
{
if (_progress == 100) { _progress = 0; }
int Increment = (100 / count);
_progress += (Increment);
WorkProgress1(_progress);
}发布于 2016-10-20 14:03:51
一个非常简单的解决方案是,在将值分配给_progress + increment之前,先检查_progress是否大于100。如果它等于或大于100,则将100发送到WorkProgress1(),并将_progress返回到0。
private void DoWork()
{
int increment = (100 / count);
if(_progress + increment >= 100)
{
WorkProgress1(100);
_progress = 0;
}
else
{
_progress += (increment);
WorkProgress1(_progress);
}
}发布于 2016-10-20 14:15:55
下面是更紧凑的croxy解决方案:
private void DoWork()
{
int increment = (100 / count);
_progress = Math.Min(100, _progress + increment);
WorkProgress1(_progress);
_progress %= 100;
}https://stackoverflow.com/questions/40156500
复制相似问题