将ListView Item从一个listView拖放到另一个

大豆鸭

现在,我能够将项目从listView 1拖到listView2。如何克隆/复制/移动项目数据?我在这里的意思的gif

widgetList是listView1。又名最右边的列表。

private void fillWidgetList()
    {
        widgetList.Groups.Add(new ListViewGroup("System", HorizontalAlignment.Left));

        var cpu = new ListViewItem { Text = "CPU", Tag = "", Group = widgetList.Groups["System"] };
        var ram = new ListViewItem { Text = "RAM", Tag = "", Group = widgetList.Groups["System"] };
        widgetList.Items.Add(cpu);
        widgetList.Items.Add(ram);
    }

widgetCollectionList是listView2。aka中间的列表。

private void widgetList_ItemDrag(object sender, ItemDragEventArgs e)
    {
        DoDragDrop(e.Item, DragDropEffects.Move);
        // am i suppose to save the dragged item somewhere?
    }

    private void widgetCollectionList_DragEnter(object sender, DragEventArgs e)
    {
        //e.Effect = DragDropEffects.Copy;

        if (e.Data.GetDataPresent(typeof(ListViewItem)))
        {
            e.Effect = DragDropEffects.Move;
        }
    }

    private void widgetCollectionList_DragDrop(object sender, DragEventArgs e)
    {
        widgetCollectionList.Items.Add(e.Data.ToString()); // What do i replace this with?
    }

    private void WidgetMaker_Load(object sender, System.EventArgs e)
    {
        widgetCollectionList.AllowDrop = true;
        widgetCollectionList.DragDrop += new DragEventHandler(widgetCollectionList_DragDrop);
    }
普萨·庞杰伦德拉普

你快到了。您不强制将传入的对象强制转换e.Data回LVI,而LVI对象只能属于一个对象ListView因此,要移动它们,您需要先将它们从旧的中删除;要复制它们,您需要克隆它们。Groups使这一点更加有趣:是否可以将一个素食主义者的物品放到水果组上?)

我对其进行了扩展,使其可以移动所有选定的项目,因此一次可以移动多个。如果这不是您想要的,它很容易删除。

private void lv_ItemDrag(object sender, ItemDragEventArgs e)
{
    // create array or collection for all selected items
    var items = new List<ListViewItem>();
    // add dragged one first
    items.Add((ListViewItem)e.Item);
    // optionally add the other selected ones
    foreach (ListViewItem lvi in lv.SelectedItems)
    {
        if (!items.Contains(lvi))
        {
            items.Add(lvi);
        }
    }
    // pass the items to move...
    lv.DoDragDrop(items, DragDropEffects.Move);
}

// this SHOULD look at KeyState to disallow actions not supported
private void lv2_DragOver(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(typeof(List<ListViewItem>)))
    {
        e.Effect = DragDropEffects.Move;
    }
}

private void lv2_DragDrop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(typeof(List<ListViewItem>)))
    {
        var items = (List<ListViewItem>)e.Data.GetData(typeof(List<ListViewItem>));
        // move to dest LV
        foreach (ListViewItem lvi in items)
        {
            // LVI obj can only belong to one LVI, remove
            lvi.ListView.Items.Remove(lvi);
            lv2.Items.Add(lvi);
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个项目从一个recyclerview(列表视图)拖放到另一个recyclerview(listview)中

Xcode将ViewController从一个项目拖放到另一个项目

将Listview项目拖放到另一个项目中

jQuery Datatable将一行从一个表拖放到另一个表

如何将文本从一个Emacs窗口拖放到另一个窗口?

Kendo Grid:将单元格数据从一个网格拖放到另一个网格

将存储文件从一个列表视图拖放到另一个列表视图

将ListView项从一个可折叠对象拖到另一个

从一个ListView移到另一个ListView

使用UIPanGuesture将UIView拖放到另一个UIView

拖动元素时将内部html拖放到另一个元素中

JavaFX将形状拖放到另一个形状上

Android 将 ImageView 拖放到另一个 ImageView

将 UIView 拖放到另一个(UIPanGesture 识别器)中

如何将ImageView拖放到另一个ImageView上

将一个画布内的对象拖放到html5中的另一个画布上

多个Intent将listView信息从一个活动传递到另一个活动

将listView传递到另一个屏幕

如何将数字从一个列表放到另一个列表中?

Onclick事件将图像从一个表放到另一个表。Javascript,HTML

UWP - c # 使用 ListView 通过拖放将 json 对象(节点)移动到另一个对象?

jQueryUI将单元格内容从表拖放到带有列索引的另一个表td

是否可以将任务从用户故事拖放到任务板上的另一个用户故事

OL3:选择图像/标记将拖放到另一个坐标(Visual Issues OpenLayers 3)

将整个内容从一个div拖放到所有其他div

另一个ListView内部的动态ListView高度

通过索引号将一个listview项目复制到另一个listview

如何使用setOnClickListener从一个活动到另一个活动获取ListView数据

将ListView行数据添加到另一个ListView并保存?安卓