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

标签 c# .net wpf drag-and-drop explorer

按照我的场景。

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

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

谢谢

编辑:感谢您提供的解决方案,我仍然需要进行一些谷歌搜索。 Here's my complete solution .

最佳答案

DragDrop.DoDragDrop 可以执行此操作,只要您将适当的 DataObject 传递给它即可。

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

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

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

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

关于c# - 拖放到桌面/资源管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3040415/

相关文章:

c# - ModelState 错误 - Newtonsoft.Json.JsonSerializationException : Cannot populate list type System.Net.TrackingStringDictionary

c# - 使用相对路径将文件添加到解决方案

c# - Webkit 的 .NET 包装器

c# - 如何在库类中使用 Profile.GetProfile()?

c# - Windows 中的文件夹有 ID 吗?或 GUID?

c# - 如何为 TreeView 中的部分而非所有节点设置图像?

.net - 以编程方式替换 Word 文档中文本的最快方法

c# - 使用样式化的单元格更改在DataGrid中突出显示所选行的方式

c# - 在 WPF 用户控件中附加 ICommand

c# - 双击listview WPF