如何保持两个ListView的数据相同。
listView1,listView3初始化时是相同的,listView2为空。
当把listView1的某条数据删除时,也把listView3中的同一条数据删除,
同时保存在listView2中。
private void Add()
{
int count = 0;
try
{
count = listView1.SelectedItems.Count;
for(int i=0;i<count ;i++)
{
ListViewItem li = listView1.SelectedItems[i];
listView1.Items.Remove(li);//把listView1要删除的
listView2.Items.Add(li);//数据保存到listView2中
listView3.Items.Remove(li);
}
}
}
----------------
现在出现的问题是 listView3删除的数据和listView1不是同一条数据?
为什么?有没有更好的办法?

解决方案 »

  1.   

    这个可能你listView1删除的时候数据库也更新了,那么再listView3删除的话就出现了不同步的可能了?你看看
    listView1.Items.Remove(li);//把listView1要删除的
    listView3.Items.Remove(li);
    这两个中的li是不是一样的!~~
      

  2.   

    有两种办法
    1、用代码控制,在删除数据的时候用Index,不要用ListViewItem 
      

  3.   

    2、比较麻烦
    先建一个类,比如CollectionBaseEx,继承CollectionBase和ICloneable
    然后定义委托
    在override他的OnRemoveComplete和OnInsertComplete方法的时候发事件出去然后在建一个你需要的数据类,继承CollectionBaseEx,把你需要的数据添加到List中
    删除或者增加的时候,改变List
    这样你就可以在OnRemoveComplete和OnInsertComplete事件中操作你的两个ListView了,保持一致
      

  4.   

    listView1.Items.Remove(li);//把listView1要删除的
    listView3.Items.Remove(li);
    这两个中的li是不是一样的!~~
    -------------------
    li的值是一样的。
      

  5.   

    我listView1.Items.Remove(li);时都没有操作数据库