【问题标题】:Drag & Drop .Net拖放.Net
【发布时间】:2020-08-18 02:59:29
【问题描述】:

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

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

【问题讨论】:

    标签: .net forms symlink drag drop


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      我不确定您的源代码的完整外观,但在您的 .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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        相关资源
        最近更新 更多