三、编写代码:
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 事件
在该事件中添加移动项的代码,我们移动鼠标的时候,DragEventArgs 的 X 和 Y 属性在屏幕坐标中,而不是在工作区坐标中,所以我们需要把它转换为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移动与嵌入式技术 (5963篇文章)
- .NET开发手册 (5664篇文章)
- 用vb.net实现闹钟提醒程序 (9次浏览)
- vb.net GDI+入门——画笔、画刷和颜色 (3次浏览)
- VB.Net实现进程监视器的方法 (1次浏览)
- VB2005中开发新一代控制台应用程序(3) (0次浏览)
- vb.net使用ListView 控件显示系统驱动器 (0次浏览)
- vb.net入门——ListView 控件的使用 (0次浏览)
- vb.net GDI+入门——使用Graphics对象填充图形 (0次浏览)
- .Net中ListView控件多选时复选框自动选择问题 (0次浏览)
- vb.net GDI+入门——使用Graphics对象绘制线图 (0次浏览)
- vb.net GDI+入门——了解Font类 (0次浏览)



