我想从checkedListBox中删除几个已选中的项目,但是我不能。请帮帮我。
for (int i = 0; i < checkedListBox1.Items.Count; i++){
if (checkedListBox1.GetItemChecked(i))
{
checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[i]);
}
}
答案 0 :(得分:2)
假设您有一个由2个项目选中的CheckedListBox。如果您删除item 1
,则item 2
将成为新的item 1
,因此将永远不会被删除。
这是详细信息:
i
初始化为0。i
小于checkedListBox1.Items.Count
(即2)。输入了循环。checkedListBox1.GetItemChecked(i)
返回true。checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[i])
从以下位置删除项目
索引0。i
增至1。i
不小于checkedListBox1.Items.Count
(即1)且循环退出。因此item 2
将不会被删除。
反转循环,它应该起作用:
for (int i = checkedListBox1.Items.Count - 1; i >= 0; i--)
{
if (checkedListBox1.GetItemChecked(i))
{
checkedListBox1.Items.Remove(checkedListBox1.Items[i]);
}
}
另一种方法如下:
while (checkedListBox1.CheckedItems.Count > 0)
{
checkedListBox1.Items.RemoveAt(checkedListBox.CheckedIndices[0]);
}
另一个:
while (checkedListBox1.CheckedItems.Count > 0)
{
checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[0]);
}
另一个:
foreach (var i in checkedListBox1.CheckedIndices)
{
checkedListBox1.Items.RemoveAt(i);
}
继续:
for(var i = 0; i < checkedListBox1.CheckedItems.Count; i++)
{
((IList) checkedListBox1.CheckedItems).Remove(checkedListBox1.CheckedItems[0]);
}