用新的替换listview中的对象?

时间:2012-11-27 08:05:16

标签: c# winforms

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

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

我要做的是,检查第二个索引,如果有匹配,请将旧项目'test'替换为新的'item'。

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

2 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

您已更新标记。您需要更改test.SubItems [0],test.SubItems [1],...以查看更改。

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