Den*_*lew 5 .net c# listview winforms
我在按钮动作中有一个循环用于删除我的空项目ListView,但问题是,当我按下按钮时,它只删除了单个项目.我的意思是:当一个接一个的时候,它不会删除项目:
例:
a1 = ""
a2 = "qwe"
a3 = ""
a4 = ""
a5 = "qwe"
Run Code Online (Sandbox Code Playgroud)
所以,点击按钮后,结果将是:
a2 = "qwe"
a3(or a4 idk) = ""
a5 = "qwe"
Run Code Online (Sandbox Code Playgroud)
我认为这很容易出现逻辑问题,但我无法弄明白.
for (int i = 0; i < listView1.Items.Count; i++)
{
if (listView1.Items[i].SubItems[2].Text == "")
{
listView1.Items[i].Remove();
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题是循环在找到空值后跳过一次检查.我如何解决它?
删除 a 中的项目时for loop,向后循环:
for (int i = listView1.Items.Count - 1; i >= 0; --i)
if (listView1.Items[i].SubItems[2].Text == "")
listView1.Items[i].Remove();
Run Code Online (Sandbox Code Playgroud)
或将 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
Run Code Online (Sandbox Code Playgroud)
这是超越ListView物品的共同原则。看看发生了什么:想象你想A从集合中删除
[A, A, B, A]
Run Code Online (Sandbox Code Playgroud)
当您发现必须删除第 0 个项目时,您不应在删除后增加计数器,而是再次测试新的第 0 个项目。
| 归档时间: |
|
| 查看次数: |
2471 次 |
| 最近记录: |