基于ListBox选择的增量进度条

时间:2015-04-08 20:20:44

标签: c# winforms progress-bar

我有一个进度条,我会在每个进程完成后递增。我有一个列表框,有10个可能的选择。例如,如果只选择了2个项目,我怎么能编码以确保进度条仍然达到100%?这就是我一直在做的,但这只有在选择了所有10个项目时才有效。

if (ListBox1.SelectedItems.Contains("1"))
{
  backgroundworker.ReportProgress(5);
  //Do This
  backgroundworker.ReportProgress(10);
}
if (ListBox1.SelectedItems.Contains("2"))
{
  backgroundworker.ReportProgress(15);
  //Do This
  backgroundworker.ReportProgress(20);
}

1 个答案:

答案 0 :(得分:0)

(未测试的)

在睡觉之后喝了很多咖啡,我觉得我找到了解决问题的可行办法。进度条应该显示的总proress为100.如果它们是10个可能的项目并且所有10个项目都被选中,则每个项目应该显示10.但是,我需要考虑的不是所有项目都被选中所以我需要捕获的数量选择的项目。使用Linq

var count = (frim item in listbox1.Items where item.Selected select item).Count();

应该返回所选项目的数量然后我将其除以100以得到每个项目应该增加的数量

var incrementamount = count/100;

中提琴是每个项目应增加的金额

if (ListBox1.SelectedItems.Contains("1"))
{
  //Do This
  backgroundworker.ReportProgress(incrementamount);
}
if (ListBox1.SelectedItems.Contains("2"))
{
  //Do This
  backgroundworker.ReportProgress(incrementamount);
}