一尘不染

拖放到桌面/资源管理器

c#

按照我的情况。

我有一个应用程序,可以将数据库中的文件结构(文件夹,文件)加载到WPF
ListView中。现在,我想从此ListView抓取一个文件,将其拖到我的桌面(或某个打开的浏览器窗口)上,然后放到那里。基本拖放,没什么花哨的。这听起来像Windows应用程序的“标准”功能-
但Google帮不上忙。

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

谢谢

编辑
:感谢您的解决方案,我仍然不得不做一些谷歌搜索。这是我完整的解决方案


阅读 234

收藏
2020-05-19

共1个答案

一尘不染

DragDrop.DoDragDrop只要您通过适当的审核就可以做到DataObject

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

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

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

实际上,无需预复制文件就可以执行此操作,但这会引起一些复杂的IDataObject交互,因此,除非您的文件可能非常大且不在文件系统中,否则我将首先尝试此方法。

2020-05-19