C# 用C语言将文件复制到剪贴板#

C# 用C语言将文件复制到剪贴板#,c#,winforms,clipboard,C#,Winforms,Clipboard,我有一个(节点,子节点)。每个节点的标记中都包含一些附加信息。此外,每个节点映射磁盘上的一个文件。在C#中复制/剪切/粘贴节点/文件的最简单方法是什么 最好有一些示例代码。考虑使用。它具有将数据放入Windows剪贴板和从Windows剪贴板检索数据所需的所有方法 StringCollection paths = new StringCollection(); paths.Add("f:\\temp\\test.txt"); paths.Add("f:\\temp\\test2.txt"); C

我有一个(节点,子节点)。每个节点的标记中都包含一些附加信息。此外,每个节点映射磁盘上的一个文件。在C#中复制/剪切/粘贴节点/文件的最简单方法是什么

最好有一些示例代码。

考虑使用。它具有将数据放入Windows剪贴板和从Windows剪贴板检索数据所需的所有方法

StringCollection paths = new StringCollection();
paths.Add("f:\\temp\\test.txt");
paths.Add("f:\\temp\\test2.txt");
Clipboard.SetFileDropList(paths);

上面的代码将把要复制的文件test.txt和test2.txt放在Windows剪贴板上。执行代码后,您可以导航到任何文件夹并粘贴(Ctrl+V)文件。这相当于在Windows资源管理器中选择两个文件并选择“复制”(Ctrl+C)。

如果仅在应用程序中复制和粘贴,则可以将树状视图的剪切/复制操作映射到仅克隆选定节点的方法。即:

TreeNode selectedNode;
TreeNode copiedNode;

selectedNode = yourTreeview.SelectedNode;

if (selectedNode != null)
{
    copiedNode = selectedNode.Clone;
}

// Then you can do whatever you like with copiedNode elsewhere in your app.
如果您希望能够粘贴到其他应用程序,则必须使用剪贴板。通过进一步了解IDataObject界面,您可以获得比纯文本更丰富的内容。我记不起出处了,但我自己的笔记里有一些东西:

在类中实现时 IDataObject方法允许用户 以多种格式将数据存储在 类的实例。将数据存储在 一种以上的格式会增加 目标应用程序, 您可能需要谁的格式要求 不知道,可以检索存储的 数据。将数据存储在 IDataObject,调用SetData方法 并在中指定数据格式 格式参数。设置自动转换 如果不希望,请将参数设置为false 要转换为其他数据的存储数据 在检索时设置格式。援引 在一个实例上多次设置数据 用于将数据存储在更多 不止一种格式

一旦您填充了一个实现了IDataObject的对象(例如称为yourTreeNodeDataObject的对象),您就可以调用:

Clipboard.SetDataObjecT(yourTreeNodeDataObject);

剪贴板只是一个占位符。将数据传输到剪贴板时,没有关于这是复制还是剪切操作的信息。调用操作的责任是根据保存的状态区分两者。例如,在Word上剪切时,剪切的文本将立即从文档中删除。剪切的文本放置在Windows剪贴板上,然后可以根据需要粘贴。