我正在尝试在处理完每个项目后使用listId.Items.Remove(listId.SelectedItem[x]);
之类的内容。显然,这没有任何建议:
int listCellCounter = 0;
for (int x = 0; x < listId.Items.Count; x++)
{
Console.WriteLine(txtWebUpdate.Text + listId.Items[x].ToString() + "&ire=1", listCell.Items[listCellCounter].ToString());
listId.SelectedIndex = x;
listCell.SelectedIndex = listCellCounter;
lblID.Text = listId.Items[x].ToString();
if (listCellCounter == listCell.Items.Count - 1)
{
listCellCounter = 0;
}
else
{
listCellCounter += 1;
}
}
答案 0 :(得分:1)
如果处理顺序不重要,则从最后一项开始。例如:
for (int x = listId.Items.Count-1; x > 0; x--) {}
答案 1 :(得分:0)
通常情况下,如果您在处理过程中删除它们,我建议您在列表中处理所选项目:
for(int x = listId.SelectedIndex; x >= 0; x = listId.SelectedIndex)
{
// Do your processing here
listId.Items.RemoveAt(x);
listId.Update();
}
但看起来你正在处理列表中的每个项目。如果是这种情况,也许这是合适的:
while (listId.Items.Count > 0)
{
listId.SelectedIndex = 0;
listId.Update();
// Do your processing here
listId.Items.RemoveAt(0);
}
答案 2 :(得分:0)
另一种选择是标记和扫描算法。在for循环中构建要删除的对象列表(而不是删除它们),然后在计算出需要删除的对象后删除该列表中的所有项目。
答案 3 :(得分:0)
如果您不想向用户显示每个项目的删除,只需在循环完成后清空ListBox
:
} //end loop
listId.Clear();