[英]How do I copy a file to the clipboard and paste it somewhere else?
我有一个带有图像缩略图的列表视图。 每个图像都有一个带有完整路径的标签。
使用右键菜单,用户可以单击“复制”。
然后这个代码被删除:
Dim selectedfile As String
selectedfile = Me.lvFotos.SelectedItems(0).Tag
Dim dataobj As New DataObject(DataFormats.FileDrop, selectedfile)
Clipboard.Clear()
Clipboard.SetDataObject(dataobj)
现在,当我在桌面上单击以粘贴文件时,VS2010中出现异常错误:
System.Windows.Forms.dll中发生了类型为'System.Runtime.InteropServices.COMException'的异常,在托管/本地边界之前未进行处理
附加信息:无效的FORMATETC结构(HRESULT的异常:0x80040064(DV_E_FORMATETC))
我在这做错了什么?
RG。 埃里克
您可以直接使用My.Computer.FileSystem.CopyFile
。
Dim source As String = lvFotos.SelectedItems(0).Tag
Dim destination As String = My.Computer.FileSystem.SpecialDirectories.Desktop & from.Substring(from.LastIndexOf("\"))
My.Computer.FileSystem.CopyFile(source, destination)
在复制文件到剪贴板时使用John Smith的代码:
Dim f() As String = {"C:\temp\Folder.jpg"}
Dim d As New DataObject(DataFormats.FileDrop, f)
Clipboard.SetDataObject(d, True)
(经过测试,可以在Windows 7 x64的VS2013中工作。)
请注意,您必须传递代表您的文件名的字符串数组,因此,如果您愿意,可以允许用户在粘贴之前收集多个项目。
当您退出程序时, Clipboard.SetDataObject
的true
允许数据保留在剪贴板上,因此如果用户选择文件并在粘贴之前退出,则它们不会丢失其选择。
发现我做错了什么。
起初我用数组中的文件名尝试了它,但是它给出了同样的错误。
现在我有这样的:
Dim selectedfile(0) As String
selectedfile(0) = Me.lvFotos.SelectedItems(0).Tag
Dim dataobj As New DataObject
dataobj.SetData(DataFormats.FileDrop, True, selectedfile)
Clipboard.Clear()
Clipboard.SetDataObject(dataobj, True)
区别在于SETDATA。 通过在SetData和SetDataObject中将第二个参数设置为TRUE,它开始起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.