0

私はlistviewいくつかのアイテムを持っています。foreach ループを使用して、一致するかどうかを確認しています。私が使用しているコードは次のようになります。

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

私がやろうとしているのは、2番目のインデックスをチェックし、一致する場合は古いアイテム「テスト」を新しいアイテム「アイテム」に置き換えることです。

どうやらリストビューに変更はありません。オブジェクトを置き換える方法が間違っていますか?

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 に答える