18

我希望能够将文件/可执行文件/快捷方式拖到 Windows 窗体应用程序中,并让应用程序确定拖放文件的原始路径,然后将其作为字符串返回。

例如,将图像从桌面拖到应用程序和消息框上的图像的本地路径。

那可能吗?有人可以给我举个例子吗?

4

2 回答 2

43

这很容易。AllowDrop只需通过将属性设置为True并处理DragEnterDragDrop事件来启用拖放。

DragEnter事件处理程序中,您可以使用类检查数据是否属于您想要的DataFormats类型。

DragDrop事件处理程序中,使用接收实际数据的Data属性和方法DragEventArgsGetData


例子:

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
于 2012-07-27T11:30:06.040 回答
5

这只是说明如果拖放不起作用,可能是因为您在管理员模式下运行 Visual Studio(我相信是 Windows 7 及更高版本)。

这也与当前在 Windows 安装中设置的UAC级别有关。

于 2016-04-28T08:05:54.087 回答