VB.NET如何将文件从windows资源管理器拖动到特定窗体?

VB.NET如何将文件从windows资源管理器拖动到特定窗体?,.net,vb.net,drag-and-drop,.net,Vb.net,Drag And Drop,在我的项目中,用户必须定义几个路径。通过单击按钮,将打开一个窗口,您可以在其中将文件/文件夹从windows资源管理器拖放到此窗口。然后我的应用程序将采用该路径并存储它 我有一个主窗体,其中是设置页面的按钮。这将按form.show打开新表单。在这个新表单中,我有另一个按钮。单击它,另一个小表单将打开,您可以在其中放置内容(form.show)。这就是事情变得棘手的地方。我不能让拖拽工作 Public Class drag Private Sub dragdrop_Load(sende

在我的项目中,用户必须定义几个路径。通过单击按钮,将打开一个窗口,您可以在其中将文件/文件夹从windows资源管理器拖放到此窗口。然后我的应用程序将采用该路径并存储它

我有一个主窗体,其中是设置页面的按钮。这将按form.show打开新表单。在这个新表单中,我有另一个按钮。单击它,另一个小表单将打开,您可以在其中放置内容(form.show)。这就是事情变得棘手的地方。我不能让拖拽工作

Public Class drag

    Private Sub dragdrop_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.TopMost = True
        Me.AllowDrop = True
    End Sub

    Private Sub drag_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
        Dim theFiles() As String = CType(e.Data.GetData("FileDrop", True), String())
        For Each theFile As String In theFiles
            MsgBox(theFile)
        Next
    End Sub

    Private Sub drag_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
End Class

如果我创建了一个新项目,并将精确的代码粘贴到form1中,它就会工作。为什么它在这个多形式的项目上不起作用,以及我如何修复它?

我发现了问题。在Vista/7/8中,以管理员权限运行应用程序是安全的

问题与安全权限的工作方式有关。能力 将普通应用程序拖放到提升的应用程序 打破UAC背后的安全模式。然而,我不清楚为什么 不显示UAC提示,因此允许临时提升 操作(与任何linux用户每天的体验非常相似)。这是 肯定是微软需要做的事情。什么事使我烦恼 这个问题已经很老了。Vista的表现也一样

你可以做两件事(一件难看,一件烦人)

丑陋:禁用UAC。但是你失去了它提供的所有额外的安全性

烦人的:使用另一个文件管理器并以管理员身份运行它 为什么是另一个文件管理器?因为你不能提升窗户 探索者尽管在Windows的上下文菜单中看到了该选项 浏览器图标和UAC提示正在显示,事实上是Windows 浏览器将不会被提升


检查这个问题。希望对你有所帮助。事实上,我觉得你的问题和这个完全一样。不,不是。我有完全相同的代码,但它不在我的项目工作。如果我创建了一个新项目,它就会工作。唯一的区别是我的项目中有多个表单。我知道。这就是为什么我没有投反对票,随它去吧,那个链接对你们有帮助吗?我可以让它和普通的新项目一起工作。代码在那里工作。但如果我试图让同样的事情发生在我的应用程序中,它就不起作用了。我打赌它一定与多种形式的应用程序有关(?),但我不知道它是什么。来源:好吧,你可以启动程序的正常权限部分,只在需要时请求管理员权限。