【问题标题】:Removing items in ListView删除 ListView 中的项目
【发布时间】:2016-06-01 05:10:29
【问题描述】:

我在按钮操作中有一个循环,用于删除我的ListView 中的空项目,但问题是,当我按下按钮时,它只会成功删除单个项目。我的意思是:它不会删除项目,当一个接一个的时候:

示例:

a1 = ""
a2 = "qwe"
a3 = ""
a4 = ""
a5 = "qwe"

所以,点击按钮后,结果将是:

a2 = "qwe"
a3(or a4 idk) = ""
a5 = "qwe"

我认为这是简单的逻辑问题,但我无法弄清楚。

for (int i = 0; i < listView1.Items.Count; i++) 
            {
                if (listView1.Items[i].SubItems[2].Text == "")
                {
                    listView1.Items[i].Remove();
                }
            }

所以问题是循环在找到空值后跳过了一次检查。 我该如何解决?

【问题讨论】:

    标签: c# .net winforms listview


    【解决方案1】:

    删除for loop 中的项目时,循环向后

    for (int i = listView1.Items.Count - 1; i >= 0; --i) 
      if (listView1.Items[i].SubItems[2].Text == "")
        listView1.Items[i].Remove();
    

    或者将for循环修改成

    for (int i = 0; i < listView1.Items.Count; ) // no ++i here
      if (listView1.Items[i].SubItems[2].Text == "")
        listView1.Items[i].Remove();
      else  
        i += 1; // ...but it's here
    

    这是ListView 项目之外的共同原则。看看发生了什么:假设您想从集合中删除 A

      [A, A, B, A] 
    

    当您发现必须删除第 0 项时,您不应该在删除后增加计数器,而是测试第 0 项再次 .

    【讨论】:

    • 聪明。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多