拖放到桌面/资源管理器

Dän*_*änu 30 .net c# wpf explorer drag-and-drop

按照我的方案.

我有一个应用程序,它将文件结构(文件夹,文件)从数据库加载到WPF ListView.现在我想从这个ListView中获取一个文件,将它拖到我的桌面(或一些打开的资源管理器窗口)上并将其放在那里.基本的拖放,没有什么花哨的.这听起来像是Windows应用程序的"标准"功能 - 但谷歌无济于事.

那我该怎么做呢?互操作性展示?

谢谢

编辑:谢谢你的解决方案,我仍然需要做一些谷歌搜索.这是我的完整解决方案.

Ray*_*rns 28

DragDrop.DoDragDrop只要你把它传给一个合适的人就可以做到这一点DataObject.

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

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

string[] paths = ...;
DragDrop.DoDragDrop(this, new DataObject(DataFormats.FileDrop, paths),
                    DragDropEffects.Copy); 
Run Code Online (Sandbox Code Playgroud)

实际上可以在不预先复制文件但是进入一些复杂的IDataObject交互的情况下执行此操作,因此除非您的文件可能非常大并且尚未在文件系统中,否则我将首先尝试此方法.

  • 我知道这是一个非常古老的主题,但你可以扩展你的声明"除非你的文件可能非常大" - 部分吗?我正试着这样做.有一个DragDrop功能,在将文件放到某处时下载该文件. (3认同)
  • 应该注意的是,即使您只有一个文件,将数据放在数组中也是至关重要的! (2认同)