我正在创建一个基于 C# windows 的应用程序,它基本上是一个 windows 资源管理器模式。用于将文件夹从一个地方复制和粘贴到另一个地方。一切正常。在我的应用程序中,我有两个窗口,每个窗口都有一个树视图。第一个是显示要复制的文件位置的树形视图,第二个是要粘贴文件的树形视图。
一切正常,使用以下代码。我在哪里获得要复制的所有文件。所有这些文件都被复制到剪贴板。
string[] files = Directory.GetFiles(txtPath.Text.ToString(), "*.*", SearchOption.TopDirectoryOnly);
//also tried using SearchOption.AllDirectories
if (files != null)
{
IDataObject data = new DataObject(DataFormats.FileDrop, files);
MemoryStream memo = new MemoryStream(4);
byte[] bytes = new byte[] { (byte)(copy_cut ? 2 : 5), 0, 0, 0 };
memo.Write(bytes, 0, bytes.Length);
data.SetData("Preferred DropEffect", memo);
Clipboard.SetDataObject(data);
}
并使用以下代码粘贴到相应的文件夹中
IDataObject data = Clipboard.GetDataObject();
if (!data.GetDataPresent(DataFormats.FileDrop))
return;
string[] files = (string[])data.GetData(DataFormats.FileDrop);
MemoryStream stream = (MemoryStream)data.GetData("Preferred DropEffect", true);
int flag = stream.ReadByte();
if (flag != 2 && flag != 5)
return;
bool cut = (flag == 2);
foreach (string file in files)
{
string dest = "C:" + "\\" + System.IO.Path.GetFileName(file);
try
{
if (cut)
File.Move(file, dest);
else
File.Copy(file, dest, false);
}
catch (IOException ex)
{
}
}
一切对我来说都很好。复制和粘贴都很好。但仅适用于没有任何子文件夹的文件夹。
如果我碰巧在一个文件夹中有很多文件夹,并且每个文件夹都有很多文件。然后上面的代码不能正常工作。
例如。
如果文件夹 A 有子文件夹 X、Y、Z 并且每个子文件夹 X、Y、Z 有很多文件,当我复制到剪贴板并粘贴到所需位置时,我只会得到文件夹 X、Y、Z 的内容/文件而不是文件夹 X、Y、Z 本身。
有没有办法可以将文件夹 X、Y、Z 复制到剪贴板并粘贴它们。就像我们在 PC 中进行的简单复制和粘贴一样,整个文件夹以及子文件夹都被粘贴到所需的位置。
与此问题相关的帮助将不胜感激。
谢谢,
维克内什瓦尔