繁体   English   中英

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

[英]delete checked items from checkedListBox c#

我想从checkedListBox 中删除几个选中的项目,但我不能。这是我的例子。 我正在尝试,但我不可能得到。

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

假设您有一个包含 2 个项目的 CheckedListBox,均已选中。 如果您删除item 1item 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]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM