根据我的方案:
我有一个应用程序,它从数据库中加载文件结构(文件夹、文件)到 WPF ListView 中。现在我想从这个 ListView 中获取一个文件,将它拖到我的桌面上(或某个打开的资源管理器窗口),然后将其放下。基本的拖放功能,没有花哨的东西。这听起来像是 Windows 应用程序的“标准”功能 - 但谷歌并不能帮忙。
那么我该如何实现呢?需要使用 Interops 吗?
谢谢。
编辑:感谢解决方案,我仍然需要进行一些谷歌搜索。 这是完整的解决方案。
根据我的方案:
我有一个应用程序,它从数据库中加载文件结构(文件夹、文件)到 WPF ListView 中。现在我想从这个 ListView 中获取一个文件,将它拖到我的桌面上(或某个打开的资源管理器窗口),然后将其放下。基本的拖放功能,没有花哨的东西。这听起来像是 Windows 应用程序的“标准”功能 - 但谷歌并不能帮忙。
那么我该如何实现呢?需要使用 Interops 吗?
谢谢。
编辑:感谢解决方案,我仍然需要进行一些谷歌搜索。 这是完整的解决方案。
DragDrop.DoDragDrop
只要你传递合适的DataObject
就可以实现这个功能。
首先将文件复制到某个地方。如果没有更好的地方,您可以使用System.IO.Path.GetTempPath()
。
接下来创建一个包含文件完整路径的字符串数组,然后执行以下操作:
string[] paths = ...;
DragDrop.DoDragDrop(this, new DataObject(DataFormats.FileDrop, paths),
DragDropEffects.Copy);
其实可以不预先复制文件就实现这个目标,但这需要涉及到一些 IDataObject 交互的复杂操作。因此,除非你的文件可能非常大且尚未存在于文件系统中,否则我建议首先尝试这种方法。