Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拖放到桌面/资源管理器_C#_.net_Wpf_Drag And Drop_Explorer - Fatal编程技术网

C# 拖放到桌面/资源管理器

C# 拖放到桌面/资源管理器,c#,.net,wpf,drag-and-drop,explorer,C#,.net,Wpf,Drag And Drop,Explorer,按照我的设想 我得到了一个应用程序,它将文件结构(文件夹、文件)从数据库加载到WPF列表视图中。现在,我想从这个列表视图中抓取一个文件,将它拖到我的桌面上(或某个打开的资源管理器窗口),然后放到那里。基本的拖放操作,没什么特别的。这听起来像是windows应用程序的“标准”功能,但谷歌不会帮上忙 那么我如何才能做到这一点呢?互操作 谢谢 编辑:谢谢你的解决方案,我还得在谷歌上搜索一下 DragDrop.DoDragDrop可以执行此操作,只要您向其传递适当的DataObject 首先把文件复制到

按照我的设想

我得到了一个应用程序,它将文件结构(文件夹、文件)从数据库加载到WPF列表视图中。现在,我想从这个列表视图中抓取一个文件,将它拖到我的桌面上(或某个打开的资源管理器窗口),然后放到那里。基本的拖放操作,没什么特别的。这听起来像是windows应用程序的“标准”功能,但谷歌不会帮上忙

那么我如何才能做到这一点呢?互操作

谢谢


编辑:谢谢你的解决方案,我还得在谷歌上搜索一下

DragDrop.DoDragDrop
可以执行此操作,只要您向其传递适当的
DataObject

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

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

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

实际上不需要预先复制文件就可以做到这一点,但这会导致一些复杂的IDataObject交互,因此,除非您的文件可能非常大并且不在文件系统中,否则我将首先尝试此方法。

如果您在此处发布完整的解决方案作为答案,我们将不胜感激。我尝试了您的示例,但无法编译,DragDrop是未知的。我需要添加一个引用或什么吗?我知道这是一个非常古老的线程,但您能否扩展您关于“除非您的文件可能非常大”部分的陈述?我正试图做到这一点。具有DragDrop功能,在将文件拖放到某处时可下载该文件。如何对DragAndDrop文件夹执行相同操作?@AishwaryaShiva,但它们不会作为文件复制到资源管理器。我做了DragDrop,什么也没发生。@Ray Burns DragDrop对象来自哪里?我试过你的例子,但DragDrop不是一个专业。我需要添加引用吗?应该注意的是,即使只有一个文件,在数组中保存数据也是至关重要的!