c# - 您如何检测文件何时被放入 Windows 资源管理器?

标签 c# .net drag-and-drop

我有一个带有 TreeView 的 WinForms 应用程序。用户可以将文件从 WindowsExplorer 拖到 TreeView,然后他们可以将文件拖回 WindowsExplorer,这实际上会将文件复制到文件被放置的位置。我想做的是,如果文件已经存在于要删除文件的目录中,我想提前重命名正在复制的文件/文件夹,这样就不会发生冲突。

下面是我将文件复制到 WindowsExplorer 的方法。在treeView的ItemDrag上,我循环遍历选中节点的节点,然后将其封装到一个数组中。然后,我使用这段代码:

        var dataObject = new DataObject(DataFormats.FileDrop, files.ToArray());
        dataObject.SetData(DataFormats.StringFormat, dataObject);
        DoDragDrop(dataObject, DragDropEffects.Copy);

这很好用,但是一旦它被发送到 Windows 资源管理器,它就超出了我的控制范围。我怎样才能找出文件被复制到的时间和地点并拦截它以进行更改?这可能吗?

最佳答案

Explorer Drag & Drop是一篇出色的文章,可以实现您想要实现的目标。

EDIT2:似乎有一个 C++ article可在 CodeProject 上使用。但是我无法找到使用 C# 来完成它的方法。

关于c# - 您如何检测文件何时被放入 Windows 资源管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1090519/

相关文章:

android - 在谷歌地图上拖动标记需要太多时间

c# - 将 Blazor 项目与库项目引用发布到 Azure

.net - 移动光标位置?

c# - 将 NServiceBus 事件从 v6 JSON 发布到 v4 XML 环境

.net - 从 VB.NET 应用程序将文件发送到 PHP 脚本

.net - 是否可以防止 DLL 被修改?

java - 将文件从操作系统拖放到 Java 应用程序 (Swing)

swift - iOS 11 拖放 UIDocument

ip-address - 在 C# 中根据 IP 地址和子网掩码计算子网号

C# app.config 问题 - ConfigurationErrorsException : Unrecognized element 'setting'