2010-06-14 137 views
27

按照我的方案。拖放到桌面/浏览器

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

那么我该如何做到这一点?互操作性展示?

感谢

编辑:感谢您的解决方案,我仍然不得不做一些谷歌上搜索。 Here's my complete solution

+1

如果您在此处发布完整的解决方案作为答案,将不胜感激。 – 2011-09-10 15:12:43

+0

我试过你的例子,但它不会编译,DragDrop是未知的。我是否需要添加参考或其他内容? – GuidoG 2015-11-03 10:52:50

回答

27

DragDrop.DoDragDrop可以做到这一点,只要你通过它适当的DataObject

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

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

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

它实际上是可以做到这一点没有,复制前的文件,而是进入一些复杂的IDataObject的相互作用,所以除非你的文件可能非常大,并且不在文件系统中,否则我会首先尝试这种方法。

+0

谢谢,我马上试一试。 – 2010-06-15 08:39:33

+0

工作,谢谢。 – 2010-06-15 09:29:23

+3

我知道这是一个非常古老的线程,但是您能否扩展您的声明以“除非您的文件可能非常大” - 部分?我正在努力做到这一点。有一个DragDrop功能,可以在将文件放到某处时下载该文件。 – Falgantil 2015-04-28 07:11:20