DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.Netで作成したアプリからエクスプローラへのドラッグ&ドロップの方法

分類:[.NET]

ListViewのItemにファイル名を追加し、
ListView_ItemDragイベントの中で
DoDragDrop(DataFormat.FileDrop)を指定します。
ListViewでドラッグしたファイル名のファイルを
エクスプローラへドロップしてもファイルがコピーされません。

ListViewで選択しているのはテキストであって、実際のファイルではありません。
ファイルオブジェクトを作成し、それをFileDropするのでしょうか?
または別のDataFormatを利用するのでしょうか?
VB.NETで作成したアプリからエクスプローラへドロップできる方法があれば教えて下さい。

以下はSample***************************************
Private Sub ListView2_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView2.ItemDrag
myDataObject.SetData(DataFormats.FileDrop, True, "C:\test.txt")
ListView2.DoDragDrop(myDataObject, DragDropEffects.Copy)
End Sub

Private Sub ListView2_GiveFeedback(ByVal sender As System.Object, ByVal e As System.Windows.Forms.GiveFeedbackEventArgs) Handles ListView2.GiveFeedback
e.UseDefaultCursors = False

drg = e.Effect
If drg = DragDropEffects.Copy Then
Cursor.Current = New Cursor("DRAGCOPY.CUR")
End If
End Sub
****************************************************************
■No2064に返信(Lさんの記事)
> VB.NETで作成したアプリからエクスプローラへドロップできる方法があれば教えて下さい

次のような感じでどうでしょうか?

Dim files As String() = {"C:\test.txt"}
Dim myDataObject As New DataObject(DataFormats.FileDrop, files)
ListView2.DoDragDrop(myDataObject, DragDropEffects.Copy)
■No2142に返信(管理人さんの記事)
> ■No2064に返信(Lさんの記事)
>>VB.NETで作成したアプリからエクスプローラへドロップできる方法があれば教えて下さい
>
> 次のような感じでどうでしょうか?
>
> Dim files As String() = {"C:\test.txt"}
> Dim myDataObject As New DataObject(DataFormats.FileDrop, files)
> ListView2.DoDragDrop(myDataObject, DragDropEffects.Copy)

解決しました。ありがとうございました。!!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板