0

我有listview几个项目。我正在使用 foreach 循环来检查是否有匹配项。我正在使用的代码如下所示:

foreach (ListViewItem test in listView1.Items)
{
   if (test.SubItems[1].ToString() == item.SubItems[1].ToString())
   {
      test.Tag = item.Tag;
   }
}

我想做的是,检查第二个索引,如果有匹配项,用新的“项目”替换旧项目“测试”。

显然列表视图没有变化。我替换对象的方式是否错误?

4

2 回答 2

1

您可以克隆该项目并直接分配给列表视图项目。但是您需要将 foreach 循环更改为 for 循环。

for (int i = 0; i < listView1.Items.Count; i++)
{
    if (listView1.Items[i].SubItems[1].ToString() == item.SubItems[1].ToString())
    {
        listView1.Items[i] = (ListViewItem)item.Clone();
    }
}
于 2012-11-27T08:40:17.063 回答
0

您只更新了标签。您需要更改 test.SubItems[0], test.SubItems[1],... 以查看更改。

或者您可以使用listView1.Items.Remove(...)orlistView1.Items.RemoveAt(...)和删除旧项目并插入新项目listView1.Items.Insert(...)。但是如果您需要考虑性能,您应该使用第一个算法(更改 test.SubItems[i])。

于 2012-11-27T08:21:37.840 回答