【问题标题】:Increment Progress Bar Based off ListBox Selection基于列表框选择的增量进度条
【发布时间】:2015-04-10 01:07:20
【问题描述】:
我有一个进度条,在每个过程完成后我都会增加它。我有一个包含 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);
}
【问题讨论】:
标签:
c#
winforms
progress-bar
【解决方案1】:
(未测试)
好吧,在睡了它并喝了很多咖啡之后,我想我找到了解决问题的可行方法。进度条应显示的总进度为 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);
}