vb.net - 使用DDEffect拖动文件移动到资源管理器 资源管理器返回DragDropEffect无

  显示原文与译文双语对照的内容

使用DragDropEffects作为副本时使用以下代码。 当对象被拖放到资源管理器DoDragDrop时,将返回副本


Dim FT As Specialized.StringCollection = New Specialized.StringCollection
FT.Add(FileName)

Dim Drag_Dat As DataObject = New DataObject(DataFormats.FileDrop)
Drag_Dat.SetFileDropList(FT)

Dim DEffect As DragDropEffects = Me.DoDragDrop(Drag_Dat, DragDropEffects.Copy)

DEffect="Copy"

当我更改以下行移动时,DoDragDrop返回任何内容。 文件已经成功移动,但资源管理器未将它的报告为已经移动。 为什么是这样的,是 Windows 使用复制,然后删除方法或者?


Dim DEffect As DragDropEffects = Me.DoDragDrop(Drag_Dat, DragDropEffects.Move)

DEffect="Nothing"

我需要能够确认文件已经成功移动。 我不是在找工作,例如,。 如果复制成功,则删除原始文件,因为这会导致将文件拖放到 Chrome 中以读取文件列表和效果副本。

时间: 原作者:

今天也有同样的问题,花了一个小时寻找一个解决方案。

同时,你也会解决这个问题,你会。 然而,我希望在这里留下解决方案,对于这个线程的所有它的他人来说。

因为你得到一个没有移动的,你可以检查文件是否被资源管理器抓取并移动到它的他地方。


 Effect = TreeView1.DoDragDrop(DObj, DragDropEffects.Copy Or DragDropEffects.Move)

 Select Case Effect
 Case DragDropEffects.Copy

 Case DragDropEffects.Move
 ' Never happenes

 Case DragDropEffects.None
 ' Trick!
 If Not IO.File.Exists(File) Then
 ' Do what should be done when moved....
. . ....
 End If
 End Select

...