在C#中将文件复制到剪贴板

时间:2008-10-17 10:03:01

标签: c# winforms clipboard

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

有一些示例代码会很好。

2 个答案:

答案 0 :(得分:42)

考虑使用Clipboard class。它具有将数据放在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)。

答案 1 :(得分:5)

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

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方法   并指定数据格式   格式参数。设置autoConvert   如果你不想要,参数为false   存储的数据要转换为另一个   检索时的格式。调用   在一个实例上多次设置SetData   IDataObject用于存储更多数据   比一种格式。

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

Clipboard.SetDataObjecT(yourTreeNodeDataObject);