32

按照我的情况。

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

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

谢谢

编辑:感谢您的解决方案,我仍然需要进行一些谷歌搜索。这是我的完整解决方案

4

1 回答 1

30

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

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

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

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

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

于 2010-06-15T08:03:03.257 回答