C#将项目从列表视图复制/移动到列表视图2的数量

时间:2013-03-13 06:30:35

标签: c# listview copy

我想知道如何将 listview1 中的双击项目复制到 listview2 ,到目前为止我在 listview1上使用了此代码鼠标双击事件。

foreach (ListViewItem item in lvItemlist.SelectedItems)
        {
            lvItemBuy.Items.Add((ListViewItem)item.Clone());
        }

当我双击该项目时,它将所选项目的所有内容复制到我的 listview2 ,无论如何这不是我想要的......我在 listview1 中说我收到了这个项目:

ID   |  ITEMNAME | QUANTITY
1    |  ITEM1    | 100

我想要的是每当我双击 listview1 上的项目时,数量应该减少1,所以在listview1上会是这样的:

ID   |  ITEMNAME | QUANTITY
1    |  ITEM1    | 99

然后将所选项目添加到 listview2 ,其中包含1个数量:

ID   |  ITEMNAME | QUANTITY
1    |  ITEM1    | 1

再次双击同一项目后,它会在 listview1 上执行相同的操作,但我不希望它复制 listview2 上的项目。只需+1数量。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。您可以为listviewItems引入Id。不要直接关闭ListViewItem,而是编写一个方法,将属性从第一个listviewitem复制到第二个。在此方法中,您可以减少数量并检查所选listviewitem是否已在第二个列表视图中

答案 1 :(得分:0)

有两种不同的方式。

如果要将项目从listview1复制到listview2:

private static void CopySelectedItems(ListView source, ListView target)
{
    foreach (ListViewItem item in source.SelectedItems)
    {
        target.Items.Add((ListViewItem)item.Clone());
    }
}

如果要将项目从listview1移动到listview2:

private static void MoveSelectedItems(ListView source, ListView target)
{    
    while (source.SelectedItems.Count > 0)
    {
        ListViewItem temp = source.SelectedItems[0];
        source.Items.Remove(temp);
        target.Items.Add(temp);
    }            
}