拖放到桌面/资源管理器

Posted

技术标签:

【中文标题】拖放到桌面/资源管理器【英文标题】:Drag and drop to Desktop / Explorer 【发布时间】:2011-03-03 16:42:04 【问题描述】:

按照我的方案。

我得到了一个应用程序,它将文件结构(文件夹、文件)从数据库加载到 WPF ListView 中。现在我想从这个 ListView 中抓取一个文件,将它拖到我的桌面(或一些打开的资源管理器窗口)上并将它放在那里。基本的拖放,没什么特别的。这听起来像是 Windows 应用程序的“标准”功能 - 但 google 不会提供帮助。

那么我该如何实现呢?互操作?

谢谢

编辑:感谢您的解决方案,我仍然需要进行一些谷歌搜索。 Here's my complete solution.

【问题讨论】:

如果您在此处发布完整的解决方案作为答案,我们将不胜感激。 我试过你的例子,但它不会编译,DragDrop 是未知的。我需要添加参考吗? 【参考方案1】:

DragDrop.DoDragDrop 可以做到这一点,只要你传递一个适当的DataObject

首先将文件复制到某处。如果没有更好的地方,可以使用System.IO.Path.GetTempPath()

接下来创建一个包含文件完整路径的字符串数组并执行以下操作:

string[] paths = ...;
DragDrop.DoDragDrop(this, new DataObject(DataFormats.FileDrop, paths),
                    DragDropEffects.Copy); 

实际上可以在不预先复制文件的情况下执行此操作,但这会涉及一些复杂的 IDataObject 交互,因此除非您的文件可能非常大并且不在文件系统中,否则我会先尝试此方法。

【讨论】:

我知道这是一个非常古老的线程,但是您能否扩展您关于“除非您的文件可能非常大”的陈述?我正在努力做到这一点。具有 DragDrop 功能,可在将文件拖放到某处时下载文件。 如何对 DragAndDrop 文件夹做同样的事情? @AishwaryaShiva 但它们不会作为文件复制到资源管理器。我做了 DragDrop 并没有任何反应。 @Ray-Burns DragDrop 对象从何而来?我试过你的例子,但 DragDrop 不是一个知道的类。我需要添加参考吗? 需要注意的是,即使只有一个文件,数组中的数据也是至关重要的!

以上是关于拖放到桌面/资源管理器的主要内容,如果未能解决你的问题,请参考以下文章

我想从 Silverlight UIElement 中拖动图像并将其放在用户桌面或 Windows 资源管理器上

Swing 应用程序 -> 拖放到桌面/文件夹

WPF:将虚拟文件拖放到 Windows 资源管理器中

从 Java Swing 应用程序拖放到 Windows 资源管理器

如何从 Swing 应用程序拖放到 Windows 资源管理器?

将大型虚拟文件从 C# 拖放到 Windows 资源管理器