I pulled this code from one of my personal projects. This should do
what you want. It looks like the second subroutine does nothing, but I
may have needed it for some reason, or it may have been for an idea
that I was working on that I never got back to.
At any rate, watch the word wrapping.
Private Sub lvw_DragDrop(ByVal sender As Object, ByVal e As
System.Windows.Forms.DragEventArgs) Handles lvw.DragDrop
Try
Dim i As Integer
Dim l_Point As Point = lvw.PointToClient(New Point(e.X,
e.Y))
Dim l_Item As ListViewItem = lvw.GetItemAt(l_Point.X,
l_Point.Y)
Dim l_Items() As ListViewItem =
e.Data.GetData("System.Windows.Forms.ListViewItem()")
Dim l_DropIndex As Integer = l_Item.Index
btnDelete_Click(sender, New System.EventArgs)
For Each l_Item In l_Items
lvw.Items.Insert(l_DropIndex + i, l_Items(i))
i = i + 1
Next
Catch ex As Exception
End Try
End Sub
Private Sub lvw_DragEnter(ByVal sender As Object, ByVal e As
System.Windows.Forms.DragEventArgs) Handles lvw.DragEnter
If e.Data.GetDataPresent("System.Windows.Forms.ListViewItem()")
Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub lvw_ItemDrag(ByVal sender As Object, ByVal e As
System.Windows.Forms.ItemDragEventArgs) Handles lvw.ItemDrag
Dim myItem As ListViewItem
Dim myItems(sender.SelectedItems.Count - 1) As ListViewItem
Dim i As Integer = 0
' Loop though the SelectedItems collection for the source.
For Each myItem In sender.SelectedItems
' Add the ListViewItem to the array of ListViewItems.
myItems(i) = myItem
i = i + 1
Next
' Create a DataObject containg the array of ListViewItems.
sender.DoDragDrop(New
DataObject("System.Windows.Forms.ListViewItem()", myItems),
DragDropEffects.Move)
End Sub