频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

vb.net 在ListView内部拖放项

来源:qqread 作者:douces 出处:巧巧读书 2008-01-26 进入讨论组
QQRead:http://www.qqread.com/book/myvbnet/my0057.html

三、编写代码:

1、ListView1_ItemDrag 事件处理程序

拖动项的时候,首先引发的是 ListView1_ItemDrag 事件,我们需要在这里通过 DoDragDrop 方法来为拖动效果的私有剪贴板添加数据,代码如下:

ListView1.DoDragDrop(ListView1.SelectedItems, DragDropEffects.Move)

2、ListView.DragEnter 事件

在该事件中添加如下代码验证拖放的数据:

Private Sub ListView1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter

Dim i As Integer

For i = 0 To e.Data.GetFormats().Length - 1

If e.Data.GetFormats()(i).Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection") Then

e.Effect = DragDropEffects.Move

End If

Next

End Sub

http://www.qqread.com/book/myvbnet/my0057.html

3、ListView1_DragDrop 事件

在该事件中添加移动项的代码,我们移动鼠标的时候,DragEventArgsXY 属性在屏幕坐标中,而不是在工作区坐标中,所以我们需要把它转换为ListView 控件区域中的坐标,代码如下所示:

Dim p As Point = ListView1.PointToClient(New Point(e.X, e.Y))

然后通过如下代码获得鼠标所在位置的项:

Dim dragToItem As ListViewItem = ListView1.GetItemAt(p.X, p.Y)

当在新的位置插入某一个项的时候,必须复制该项的一个副本才能在新位置插入,完毕之后删除该项,代码如下所示:

Dim insertitem As ListViewItem = CType(dragItem.Clone, ListViewItem)

ListView1.Items.Insert(itemIndex, insertitem)

ListView1.Items.Remove(dragItem)

更多文章 更多内容请看.NET移动与嵌入式技术.NET开发手册专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章