将文件夹复制到剪贴板

时间:2013-03-07 07:46:31

标签: c# directory clipboard

我正在使用C#作为此试用版的编程语言。

我搜索了无数的论坛和其他地方,这些地方出现在我的Google搜索结果中。但是,我无法找到解决问题的方法。

我有一个FileExplorer,我的Context Menu Strip组件中有菜单项Copy / Paste / Delete。现在,我在文件资源管理器中为文件复制工作,但我正在试图弄清楚如何复制文件夹。

我正在使用TreeView组件作为我的主要组件。

什么是文件资源管理器?这就是我所说的(这是我的文件资源管理器的实际图像):

enter image description here

这是我目前在“FileExplorer”文件夹中复制“文件”的代码。它还检索'FileExplorer \'文件夹中的其他文件夹/文件。

    private void toolStripMenuItemCopy_Click(object sender, EventArgs e)
    {
        try
        {
            DirectoryInfo[] directories = directoryInfo.GetDirectories();
            foreach (FileInfo file in directoryInfo.GetFiles()) // Retrieving the files inside of FileExplorer\ folder
            {
                if (file.Exists && file.Name == treeView.SelectedNode.Text)
                {
                    StringCollection filePath = new StringCollection();
                    filePath.Add(file.FullName);
                    Clipboard.SetFileDropList(filePath); // Copying the selected (node) file
                }
            }

            if (directories.Length > 0)
            {
                foreach (DirectoryInfo directory in directories) // Retrieving the directories inside of the FileExplorer\ folder
                {
                    foreach (FileInfo file in directory.GetFiles()) // Retreiving all the files inside of the directories
                        if (file.Exists && file.Name == treeView.SelectedNode.Text)
                        {
                            StringCollection filePath = new StringCollection();
                            filePath.Add(file.FullName);
                            Clipboard.SetFileDropList(filePath); // Copying the selected (node) file
                        }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

如果有人能够提供关于如何复制文件资源管理器中的文件夹所需的指针/代码,将不胜感激。

2 个答案:

答案 0 :(得分:1)

<强> VB.NET

Dim f() As String = {"C:\SureFire\TWHomepage"}
Dim d As New DataObject(DataFormats.FileDrop, f)
Clipboard.SetDataObject(d, True)

答案 1 :(得分:-1)

StringCollection files = Clipboard.GetFileDropList();
foreach (string file in files)
{
    if (System.IO.Directory.Exists(file))
    {
        string destPath = info.FullName;
        FileSystem.CopyDirectory(file, destPath, UIOption.AllDialogs, UICancelOption.DoNothing);

    }
}