C# ListView添加DragDrop
先建立好ListView,ImageList,
然后编写一个比较类
在就是添加DragDrop事件了
具体实现看代码吧
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- InitializeListView();
- }
- // 初始化listView1.
- private void InitializeListView()
- {
- listView1.ListViewItemSorter = new ListViewIndexComparer();
- //初始化插入标记
- listView1.InsertionMark.Color = Color.Red;
- //
- listView1.AllowDrop = true;
- }
- // 当一个项目拖拽是启动拖拽操作
- private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
- {
- listView1.DoDragDrop(e.Item, DragDropEffects.Move);
- }
- private void listView1_DragEnter(object sender, DragEventArgs e)
- {
- e.Effect = e.AllowedEffect;
- }
- //像拖拽项目一样移动插入标记
- private void listView1_DragOver(object sender, DragEventArgs e)
- {
- // 获得鼠标坐标
- Point point = listView1.PointToClient(new Point(e.X, e.Y));
- // 返回离鼠标最近的项目的索引
- int index = listView1.InsertionMark.NearestIndex(point);
- // 确定光标不在拖拽项目上
- if (index > -1)
- {
- Rectangle itemBounds = listView1.GetItemRect(index);
- if (point.X > itemBounds.Left + (itemBounds.Width / 2))
- {
- listView1.InsertionMark.AppearsAfterItem = true;
- }
- else
- {
- listView1.InsertionMark.AppearsAfterItem = false;
- }
- }
- listView1.InsertionMark.Index = index;
- }
- // 当鼠标离开控件时移除插入标记
- private void listView1_DragLeave(object sender, EventArgs e)
- {
- listView1.InsertionMark.Index = -1;
- }
- // 将项目移到插入标记所在的位置
- private void listView1_DragDrop(object sender, DragEventArgs e)
- {
- // 返回插入标记的索引值
- int index = listView1.InsertionMark.Index;
- // 如果插入标记不可见,则退出.
- if (index == -1)
- {
- return;
- }
- // 如果插入标记在项目的右面,使目标索引值加一
- if (listView1.InsertionMark.AppearsAfterItem)
- {
- index++;
- }
- // 返回拖拽项
- ListViewItem item = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
- //在目标索引位置插入一个拖拽项目的副本
- listView1.Items.Insert(index, (ListViewItem)item.Clone());
- // 移除拖拽项目的原文件
- listView1.Items.Remove(item);
- }
- // 对ListView里的各项根据索引进行排序
- private class ListViewIndexComparer : System.Collections.IComparer
- {
- public int Compare(object x, object y)
- {
- return ((ListViewItem)x).Index - ((ListViewItem)y).Index;
- }
- }
- }
- http://blog.csdn.net/lilongherolilong/article/details/6689109
C# ListView添加DragDrop的更多相关文章
- 仿喜马拉雅实现ListView添加头布局和脚布局
ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动 ...
- ListView添加项目带序列
ListView添加项目带序列 function AddSelItems(listview1:TListView;ListView2:TListView):Boolean;var s: st ...
- 为ListView添加头和脚
转自:https://software.intel.com/zh-cn/blogs/2014/12/15/android-listview-addheaderview-addfooterview ...
- 自定义listView添加滑动删除功能
今天研究了一下android里面的手势,结合昨天学习的自定义View,做了一个自定义的listview,继承自listView,添加了条目的滑动手势操作,滑动后出现一个删除按钮,点击删除按钮,触发一个 ...
- Android之listview添加数据篇
一.ListView: 1. ListView通常有两个职责: 1.向布局填充数据 2.处理选择点击等操作 2.ListView的创建需要3个元素: 1. ListView中的每一列的View. 2. ...
- Android在listview添加checkbox实现单选多选操作问题(转)
转自:http://yangshen998.iteye.com/blog/1310183 在Android某些开发需求当中,有时候需要在listveiw中加入checkbox实现单选,多选操作.表面上 ...
- 【WinForm】线程中向listview添加数据
在使用listview的时候,因为处理的数据较多,为防止在处理数据时出现假死的状态出现卡的情况,我们使用委托进行处理添加数据 定义委托 private delegate void AddListVie ...
- Android在listview添加checkbox实现单选多选操作问题
android根据View的不同状态更换不同的背景http://www.eoeandroid.com/thread-198029-1-1.html android 模仿朋友网推出的菜单效果[改进版]h ...
- ListView添加图片文字项
1)listview 控件 结合 imagelist 控件 实现类似效果. 2)添加 imagelist 控件 images 属性,点击后面的... 添加相应图片. 3)点listview,查看其属性 ...
随机推荐
- 无线网络中的MIMO与OFDM技术原理分析
无线网络中的MIMO与OFDM技术原理分析CNET中国·ZOL 07年08月14日 [原创] 作者: 中关村在线 张伟 从最早的红外线技术到目前被寄予重望的WIFI,无线技术的进步推动我们的网络一步步 ...
- linux运维、架构之路-Hadoop完全分布式集群搭建
一.介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件 ...
- codevs 2039 骑马修栅栏 USACO x
题目描述 Description Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏 ...
- [BZOJ1478&1488&1815][SGU282]Isomorphism:Polya定理
分析 三倍经验题,本文以[BZOJ1478][SGU282]Isomorphism为例展开叙述,主体思路与另外两题大(wan)致(quan)相(yi)同(zhi). 这可能是博主目前写过最长也是最认真 ...
- RabbitMQ(Exchange交换机详解)(四)
Exchange:接收消息,并根据路由键转发消息所绑定的队列 ClientA,B将消息投递到交换机Exchange上,通过路由关系,投递到指定的queue1或者queue2上,通过监听投递到Clien ...
- 用shell和python实现数组的一个例子
目标是把字符串中的值等分为几段,取每段固定位置的值 shell脚本 #!/bin/bash ele="1 2 3 4 5 6" n= array1=() for x in $ele ...
- AMD - Learning JavaScript Design Patterns [Book] - O'Reilly
AMD - Learning JavaScript Design Patterns [Book] - O'Reilly The overall goal for the Asynchronous Mo ...
- Collector 源码分析
Collectors Collectors 配合 stream 可以实现 MapReduce 操作,也可以单独完成流中元素的收集. 收集器接口和实现 /** * 收集器接口 */ public int ...
- ubuntu 安装maven
1.下载maven文件 切换目录 root@ubuntu:~# cd /usr/local 下载文件 root@ubuntu:/usr/local# wget http://mirror.bit.ed ...
- 20160520—JS打分控件
效果预览: 可实现功能:鼠标在滑动条内左右滑动,文本框内分数变动:文本框输入数字,滑动条长度自动改变. JavaScript代码: $(function () { scoreFun($("# ...