如何在C#中循环遍历CheckedListBox并删除选定的项目

4

在我的应用程序中,用户可以在checkedlistbox中添加一些项目,然后用户选择某些元素并单击按钮"删除"。如何循环遍历checkedListBox并删除所选项目?

3个回答

3
你可以像下面一样在 while 循环中检查选中项目的数量并将其删除。
while (checkedListBox1.CheckedItems.Count > 0) {
   checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[0]);
}

或者

int lastIndex =checkedListBox1.Items.Count-1;
for(int i=lastIndex ; i>=0 ; i--)
{
    if (checkedListBox1.GetItemCheckState(i) == CheckState.Checked)
    {
             checkedListBox1.Items.RemoveAt(i);
    }
}

能否循环遍历CheckedListBox并检查选定的项目,如果选定则将其删除? - Bryuk
如果你要循环并删除,请不要使用foreach,它不起作用。你可以使用for循环,但是从后往前删除项目。 - Damith
错误1:'object'不包含名为'Selected'的定义,也没有接受类型为'object'的第一个参数的扩展方法'Selected'(是否缺少使用指令或程序集引用?) - Bryuk
谢谢!我花了3个小时在这上面!checkedListBox有很多奇怪的问题!...但是在for语句中用分号代替逗号。这是c#,也许有人会用到它。 - Bryuk

1

试一下。这是有效的代码

for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
    if (CheckBoxList1.Items[i].Selected)
    {
         CheckBoxList1.Items.RemoveAt(i);
         i--;
     }
}   

错误1:'object'不包含名为'Selected'的定义,也没有接受类型为'object'的第一个参数的扩展方法'Selected'(是否缺少使用指令或程序集引用?) - Bryuk
如果两个选定的项目是相邻的,您将跳过第二个项目。 - SimpleVar

0
从列表中删除某些元素的技巧是反向遍历列表 - 从计数-1到0。这样,当您删除一个元素时,仍然关心的剩余元素的索引没有改变。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接