【问题标题】:How to loop through checkedlistbox and remove selected items in c#如何遍历checkedlistbox并删除c#中的选定项目
【发布时间】:2013-05-04 03:37:19
【问题描述】:

在我的应用中,用户可以在checkedlistbox 中添加一些项目,然后用户选择一些元素并单击按钮“删除”。如何循环访问我的 checkedListBox 并删除选定的项目?

【问题讨论】:

    标签: c# loops checkedlistbox


    【解决方案1】:

    您可以检查检查项目的数量并在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并检查,如果项目被选中 - 删除它?
    • 如果你要循环和删除不要使用foreach 它不会工作,你也可以使用for循环但从最后一个到第一个删除项目。
    • 错误 1 ​​'object' 不包含 'Selected' 的定义,并且找不到扩展方法 'Selected' 接受类型为 'object' 的第一个参数(您是否缺少 using 指令或程序集参考?)
    • 谢谢!我花了3个小时在上面! checkListBox 很奇怪! ...但是在 for 语句中使用分号而不是逗号。是 c# 也许有人会用它。
    【解决方案2】:

    试试看。这是工作代码

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

    【讨论】:

    • 错误 1 ​​'object' 不包含 'Selected' 的定义,并且找不到接受类型为 'object' 的第一个参数的扩展方法 'Selected'(您是否缺少 using 指令或程序集参考?)
    • 如果两个选中的项目一个接一个,你会跳过第二个。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多