zoukankan      html  css  js  c++  java
  • C# 的 ListView 中 多个 Items 的 批量移动方法

    C# 把 DragDrop 实现的很全面。

    一个 ListView,当其 AllowDrop = true 后,就会支持 DragDrop 了。

    可以把外部的 东西 拖进 ListView ,也可以支持 ListView 中,Item 之间的互拖(比如用来改变Item之间的顺序)。

    若要支持一批的 Items (如选中的一批)移到某个 Item 之后要怎么做呢?

    诀窍就在于 ItemDrag 这个实现中。

    private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
    {
        //listView1.DoDragDrop(e.Item, DragDropEffects.Move);
        listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Move);
    }

    如上代码,如果是把 Item A 拖到 Item B上,就用上面注释掉的那句。如果是选中的一批,就用下面那句。

     DoDragDrop 的第一个参数,其实就会被放到 其它 DragXXXXX 实现方法的参数 DragEventArgs 的 Data 中。

    对应的,需要在 其它几个 DragOver,DragDrop,DragEnter 方法实现中,对输入的数据类型做一下判断,分类处理。大至如下:

    if (e.Data.GetDataPresent(DataFormats.FileDrop)) //拖动的是文件列表
    {
    }
    else if (e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection)))  //拖动的是选中的 Items
    {
    }
    else if (e.Data.GetDataPresent(typeof(ListViewItem)))  //拖动的是某个 Item 
    {
    }
    else //拖入的是其它未知的东西
    {
    }
  • 相关阅读:
    用户场景描述
    个人工作总结(第一阶段)
    个人进度报告
    《构建之法》阅读笔记05
    《构建之法》阅读笔记04
    《构建之法》阅读笔记03
    2020寒假学习(14)
    2020寒假学习(13)
    2020寒假学习(12)
    2020寒假学习(11)
  • 原文地址:https://www.cnblogs.com/pencilstart/p/13715399.html
Copyright © 2011-2022 走看看