【发布时间】:2010-10-18 09:46:11
【问题描述】:
我正在尝试做一个选项,删除选中列表框中所有未选中的项目。一切都很好,但是当我得到 2 个或更多同名的项目时,它就出错了。
例如:我在列表框中有 3 个具有相同名称的项目,第一个被选中。 现在我运行这个事件,但现在最后两个被删除了,第一个被取消选中...
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++,再次重复循环,进入else,在else之前,检查clbInstant(0)的检查状态,clbInstant(1)的检查状态未检查,并且i 是 1。但是在 else 之后,我还剩下 2 项,都未选中。
现在它第二次运行循环,它删除了最后一个未选中的项目,结果保留了 1 个未选中的项目...
如果我有不同名称的项目,我完全没有问题......
【问题讨论】:
标签: c#