如何将文件列表添加到剪贴板以进行剪切

How to add list of files to clipboard for cutting

我在代码项目上找到了 this article,它展示了如何将文件(路径)列表添加到剪贴板并将其标记为移动而不是复制。 使用的方法在互联网上的多篇文章中都有介绍,据说有效,但我似乎无法使用它。

我正在使用 Windows 8.1(64 位)。在我从列表中剪切了几个文件并尝试将文件粘贴到资源管理器中的某处后,我只听到叮的一声,但没有任何反应。 复制文件虽然有效。

这是我的:

StringCollection paths = new StringCollection();
foreach (FileInformation file in lbxFoundFiles.SelectedItems)
{
    paths.Add(file.FileInf.FullName);
}

IDataObject data = new DataObject(DataFormats.FileDrop, paths);
MemoryStream memo = new MemoryStream(4);
byte[] bytes = new byte[] { 2, 0, 0, 0 };
memo.Write(bytes, 0, bytes.Length);
data.SetData("Preferred DropEffect", memo);
Clipboard.SetDataObject(data);

您向 DataObject 构造函数传递了错误的数据。这样做:

byte[] moveEffect = { 2, 0, 0, 0 };
MemoryStream dropEffect = new MemoryStream();
dropEffect.Write(moveEffect, 0, moveEffect.Length);

StringCollection filestToCut = new StringCollection {"D:\test.txt"};
DataObject data = new DataObject("Preferred DropEffect", dropEffect);
data.SetFileDropList(filestToCut);

//or execute default constructor and uncomment line below:
//data.SetData("Preferred DropEffect", dropEffect);

Clipboard.Clear();
Clipboard.SetDataObject(data, true);