如何设置剪贴板来复制文件?

时间:2009-07-18 22:38:48

标签: c# .net

在我的应用程序中,我允许用户选择与磁盘上的文件对应的项目。当用户按下Ctrl + C时,我希望将文件发送到剪贴板,然后用户可以将文件粘贴到其他位置。

我想以某种方式实现它,以便用户可以复制,但不能粘贴到我的应用程序中。然后,用户可以将文件粘贴到资源管理器或其他将从剪贴板接受文件的应用程序的实例中。

我知道如何在剪贴板中设置信息,而不是如何设置它,以便Windows将其识别为某些文件的复制操作。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:9)

要捕获CTRL + C,您可以检查KeyPress事件上的按键。要复制文件,请使用类似下面的内容:

private void CopyFile(string[] ListFilePaths)
{
  System.Collections.Specialized.StringCollection FileCollection = new System.Collections.Specialized.StringCollection();

  foreach(string FileToCopy in ListFilePaths)
  {
    FileCollection.Add(FileToCopy);
  }

  Clipboard.SetFileDropList(FileCollection);
}

答案 1 :(得分:6)

只需使用剪贴板类:
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

使用SetFileDropList方法使Windows将其识别为复制操作:
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.setfiledroplist.aspx

如果您的应用程序中的数据不是基于实际文件,我建议您首先将它们生成为用户临时文件夹中的临时文件,然后将它们添加到文件列表中。