1

通常我们可以将一个图标 (.lnk) 放到 WinForms 中以使其成为“目标”,事实上这是一项非常容易的任务。但是,Windows 10 发生了哪些变化,我如何对 Windows 10 开始菜单图标执行相同操作(它是符号链接吗?或者有没有办法在将其放入表单后获取其目标路径。当您拖动任何其他图标你得到一个+符号(它是允许的)然后检索路径,如果它是从开始菜单中的一个图标,你会得到一个带有一条线的圆圈(不能放下它)。所以我不知道为什么。有没有人有任何想法?

为什么我不能将 Windows 10“图标”拖放到我的表单中?如果是这样,可以修复吗?最后。除此之外,如果我放下它时它不是.lnk,我怎么能得到它的“目标路径”?

4

2 回答 2

0

我不确定您的源代码的完整外观,但是在您的 .DragEnter 事件上使用 .Link 而不是常规的 .Copy 将允许您将开始菜单图标拖到表单上

我有一个简单的winform,带有一个允许在这个项目中放置的标签

Imports System.IO
Public Class Form1
Private Sub DropHere_DragDrop(sender As Object, e As DragEventArgs) Handles lblDropHere.DragDrop
    Dim file() As String = e.Data.GetData(DataFormats.FileDrop)
    MessageBox.Show(Path.GetFullPath(file(0)))
End Sub
    Private Sub DropHere_DragEnter(sender As Object, e As DragEventArgs) Handles lblDropHere.DragEnter
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.Link
    End If
End Sub
End Class

我通过在应用程序中反复使用的拖放操作对其进行了修改

于 2020-08-17T18:31:50.243 回答
0

我发现了为什么它不适合你。

问题通常是当我们过去这样做时,我们会将“效果”设置为复制。大多数都这样做。在这种情况下,您需要将效果设置为 .link

e.Effect = (If(e.Data.GetFormats().Any(Function(f) f = DataFormats.FileDrop), DragDropEffects.Link, DragDropEffects.All))

然后它将允许您“链接”文件,该文件将为您提供开始菜单项的 .lnk (除了 UWP ,我现在想弄清楚)

于 2020-08-11T14:47:42.137 回答