我希望能够将文件/可执行文件/快捷方式拖到Windows窗体应用程序中,让应用程序确定删除文件的原始路径,然后将其作为字符串返回?
E.g。将图像从桌面拖到应用程序和消息框中,然后向上移动图像的本地路径。
这可能吗?有人可以给我一个例子吗?
由于
答案 0 :(得分:33)
这很容易。只需将AllowDrop
属性设置为True
并处理DragEnter
和DragDrop
事件即可启用放置和放弃。
在DragEnter
事件处理程序中,您可以使用DataFormats
类检查数据是否属于您想要的类型。
在DragDrop
事件处理程序中,使用Data
的DragEventArgs
属性来接收实际数据和[GetData][6]
方法
示例:强>
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.AllowDrop = True
End Sub
Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
For Each path In files
MsgBox(path)
Next
End Sub
Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
End If
End Sub
答案 1 :(得分:4)
这只是一个注释,因此如果拖放不起作用,可能是因为您在管理员模式下运行Visual Studio(Windows 7及以上版本,我相信)。这也与当前在Windows上设置的UAC级别有关。