从checkedListBox c#中删除选中的项目

时间:2019-02-06 22:33:34

标签: c# checklistbox

我想从checkedListBox中删除几个已选中的项目,但是我不能。请帮帮我。

            for (int i = 0; i < checkedListBox1.Items.Count; i++){
            if (checkedListBox1.GetItemChecked(i))
            {
                checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[i]);
            }
        }

1 个答案:

答案 0 :(得分:2)

假设您有一个由2个项目选中的CheckedListBox。如果您删除item 1,则item 2将成为新的item 1,因此将永远不会被删除。

这是详细信息:

  1. i初始化为0。
  2. i小于checkedListBox1.Items.Count(即2)。输入了循环。
  3. checkedListBox1.GetItemChecked(i)返回true。
  4. checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[i])从以下位置删除项目 索引0。
  5. i增至1。
  6. 循环结束。
  7. 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]);
}