リストビューでドラッグドロップで処理を可能にする
テーマ:vb.netプログラミングの基本リストビューを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