【问题标题】:Move Listview with datatable into another listview将带有数据表的列表视图移动到另一个列表视图中
【发布时间】:2017-08-14 15:43:48
【问题描述】:

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

这是我到目前为止所拥有的。它只移动选定的项目。我希望它移动整个选定的行。

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]);

            }
        }
    }

这就是我运行代码时发生的情况。

【问题讨论】:

  • 如何填充第一个列表视图?
  • 来自 Mysql 数据库
  • @mm8 那时我正在对代码进行试验,忘记将其改回原来的样子。使用该代码,它仍然只移动一项而不是整行。

标签: c# visual-studio listview


【解决方案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);
    }
}

【讨论】:

  • 它仍然只移动所选项目的 1 个。前任。我点击第一行,只有第一列的第一项被移动。谢谢你的回答
  • 我还是有同样的问题。也许我的第二个列表视图是错误的?因为它甚至没有显示该项目的列名。只是项目。请参阅有问题的图片,它与您的代码的输出相同。
  • 您需要在目标 ListView 中添加列
  • 我发现了问题,就是这么简单。我必须设置列表视图的 View 属性。代码现在可以完美运行了,谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多