リストビューでドラッグドロップで処理を可能にする | なんでも計算部屋

リストビューでドラッグドロップで処理を可能にする


リストビューを2つ表示させ、片方のリストをドラッグし、もう片方にコピーする方法を紹介します。


(1)ドラッグドロップされる側のリストビューのプロパティでAllowDropをTrueにする

(2)ドラッグドロップされる側のリストビューにItemDragイベントを作成する。

(3)ドラッグドロップする側のリストビューにDragEnterイベントを作成する。

(4)ドラッグドロップする側のリストビューにDragDropイベントを作成する。


実際は、DoDragDrop関数の第1引数でデータを渡し、受け側でそのデータに対して処理を行いますが、下記の例では、Testという文字列だけを渡すようになってます。


Private Sub From_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles From.ItemDrag
Dim strCmd As String

'選択したオブジェクトをドラッグ
strCmd = "Test"
DoDragDrop(strCmd, DragDropEffects.Copy)

End Sub


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

'有効なドラッグか?
If e.Data.GetDataPresent(GetType(String)) = True Then
If CStr(e.Data.GetData(GetType(String))) = "Test" Then
e.Effect = DragDropEffects.Copy
End If
End If

End Sub


Private Sub To_DragDrop(ByVal sender As Object, ByVal e As

System.Windows.Forms.DragEventArgs) Handles To.DragDrop

'有効なドラッグか?
If e.Data.GetDataPresent(GetType(String)) = True Then
If CStr(e.Data.GetData(GetType(String))) = "Test" Then
'ここでデータに対する処理を行う
End If
End If

End Sub