将带有数据表的Listview移动到另一个列表视图中

时间:2017-08-14 15:43:48

标签: c# visual-studio listview

我想将所选行移到旁边的列表视图中。源列表视图具有FullRowSelect = true和MultiSelect = false。源列表视图通过数据库中的数据表填充。

Listview

这是我到目前为止所拥有的。它仅移动所选项目。我想让它移动整个选定的行。

private static void MoveSelectedItems(ListView source, ListView target)
    {

        for (int i = 0; i < source.Items.Count; i++)
        {
            if (source.Items[i].Selected)
            {
                target.Items.Add(source.Items[i]);

            }
        }
    }

当我运行代码时会发生这种情况。

Output

1 个答案:

答案 0 :(得分:1)

首先,由于您已将MultiSelect设置为false,因此您不需要循环来迭代所有项目。

其次,移动部分很简单。您获取所选项目并将其添加到目标项目中。由于您正在移动,而不仅仅是复制,我们还将从源列表视图中删除该项目。

private static void MoveSelectedItems(ListView source, ListView target)
{
    if(source.SelectedItems.Count > 0)
    {
        ListViewItem selectedItem= source.SelectedItems[0];
        foreach (var subItem in source.SelectedItems[0].SubItems)
        {
             selectedItem.SubItems.Add (subItem);
        }
        source.Items.Remove(selectedItem);
        target.Items.Add(selectedItem);
    }
}