我有一个 Windows Forms 中的 TreeView(节点,子节点)。每个节点在其标签中包含一些附加信息。此外,每个节点映射磁盘上的一个文件。在C#中,最简单的复制/剪切/粘贴节点/文件的方法是什么?
最好提供一些示例代码。
我有一个 Windows Forms 中的 TreeView(节点,子节点)。每个节点在其标签中包含一些附加信息。此外,每个节点映射磁盘上的一个文件。在C#中,最简单的复制/剪切/粘贴节点/文件的方法是什么?
最好提供一些示例代码。
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 的实例中存储数据,请调用 SetData 方法并在 format 参数中指定数据格式。如果您不希望存储的数据在检索时转换为另一种格式,请将 autoConvert 参数设置为 false。在 IDataObject 的一个实例上多次调用 SetData 来以多种格式存储数据。
一旦您填充了实现 IDataObject 的对象(例如名为 yourTreeNodeDataObject 的对象),那么您就可以调用:
Clipboard.SetDataObjecT(yourTreeNodeDataObject);