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

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

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

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

我怎么能做到这一点?

要捕获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); } 

只需使用Clipboard类:
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

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