[英]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 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]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.