0
我正在尝试创建一个选项,以删除选中的列表框中的所有未选中的项目。一切都很顺利,但是当我得到2个或更多具有相同名称的项目时,它会出错。在CheckedListBox中取消选中错误的项目
例如:我有三个项目在列表框中的名称相同,第一个选中。 我现在运行的情况下,但现在最后2被删除,第一个是选中...
private void removeAllUncheckedProcessesToolStripMenuItem_Click(object sender, EventArgs e)
{
int i = 0;
while (true)
{
if (clbInstant.Items.Count - i == 0)
{
break;
}
if (clbInstant.GetItemCheckState(i) == CheckState.Checked)
{
i++;
}
else
{
clbInstant.Items.Remove(clbInstant.Items[i]);
}
}
}
如果我运行调试器,它进入循环,它i++
,再次重复这个循环,在其他情况下,在clbInstant(0)
的其他检查状态被检查之前,clbInstant(1)
的检查状态未被检查,并且i
是1.但是在其他情况下,我得到2个项目,两个都未被检查。 现在它运行第二个最后一次循环,并删除最后选中的项目,有1项未选中保持结果...
如果我有不同的名称的项目,我一点问题都没有。 ..
修正的答案。 – kyndigs 2010-10-18 10:45:42
.CheckedItems是可能的,但由于某种原因.UncheckedItems不是... – Ivar 2010-10-18 11:01:40
对不起,这是一个错字:p现在排序,这应该通过所有列表项目并删除未选中的项目。 – kyndigs 2010-10-18 11:02:30