gpt4 book ai didi

c# - 使用 ListView.Item.RemoveAt() 时不会删除指定的项目

转载 作者:太空狗 更新时间:2023-10-29 22:24:36 35 4
gpt4 key购买 nike

我尝试使用 RemoveAt() 方法从 ListView 中删除特定项目。但是当我第一次删除它时,一些项目会保留下来。

例如:见下图

alt text

代码:

private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < listView1.Items.Count; i++)
{
if (listView1.Items[i].SubItems[0].Text == "A1")
{
listView1.Items.RemoveAt(i);
}
}
}

private void Form1_Load(object sender, EventArgs e)
{
for(int i = 0; i<3; i++)
{
ListViewItem lvi = new ListViewItem("A1");
lvi.SubItems.AddRange(new string[] {"desc" + i.ToString(), i.ToString()});
listView1.Items.Add(lvi);
}

for (int i = 0; i < 2; i++)
{
ListViewItem lvi = new ListViewItem("A2");
lvi.SubItems.AddRange(new string[] { "desc" + i.ToString(), i.ToString() });
listView1.Items.Add(lvi);
}
}

最佳答案

参见 MSDN备注部分。

When you remove an item from the collection, the indexes change for subsequent items in the collection. All information about the removed item is deleted. You can use this method to remove a specific item from the collection by specifying the index of the item to remove from the collection. To specify the item to remove instead of the index to the item, use the Remove method. To remove all items from the collection, use the Clear method.

编辑:参见 Moot 的回答。上面的链接/引用也适用于他/她的回答。

编辑 2:

如果找到匹配项,只需将计数器倒上一个即可。

    for (int i = 0; i < listView1.Items.Count; i++)
{
if (listView1.Items[i].SubItems[0].Text == "A1")
{
listView1.Items.RemoveAt(i);
i--; // Back counter up one
}
}

关于c# - 使用 ListView.Item.RemoveAt() 时不会删除指定的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4048682/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com