急!特急!C#不能清空OFFICE2010的剪贴板Clipboard

sxd0081 2013-01-03 11:28:48
用C#开发Excel2010的VSTO项目,虽然使用了Clipboard.Clear(),但不能清空OFFICE2010的剪贴板Clipboard,现象是代码进行清空后,通过Clipboard.GetDataObject().GetFormats()方法查看已经没有可用数据类型了,但Excel的Sheet里边还能粘贴,另外通过FFICE2010的剪贴板监视窗口的清空button已经清空了窗口,但Excel的Sheet里边仍然能粘贴,不知什么原因,难道OFFICE2010没有和系统剪贴板进行交互管理?
...全文
282 点赞 收藏 8
写回复
8 条回复
pcnetman 2014年03月25日
用MSAA来做,刚写了个源码, 需要的话,可以加我QQ=696090。
回复 点赞
引用 4 楼 zm0081 的回复:
实在着急,再追述一点,就是我当前的问题能否通过代码实现对粘贴操作的控制,能否在给excel2010粘贴时,只能进行[值粘贴],也就是说,格式等信息都不要。 @@刚才想先给出一些分,但好像必须结贴后才可以,Sorry!给出方法即可结贴。
没用过VSTO,但是给你一个一般性的建议。你可以在Excel中录制一个宏,Excel支持只粘贴文本而不要格式的操作。你操作完了,再停止录制宏,打开VBA编辑器,看看生成的代码,照着写。
回复 点赞
benbenRH 2013年01月04日
实在不行时,你可以选择使用钩子!
回复 点赞
sxd0081 2013年01月04日
实在着急,再追述一点,就是我当前的问题能否通过代码实现对粘贴操作的控制,能否在给excel2010粘贴时,只能进行[值粘贴],也就是说,格式等信息都不要。 @@刚才想先给出一些分,但好像必须结贴后才可以,Sorry!给出方法即可结贴。
回复 点赞
sxd0081 2013年01月04日
非常感谢版主和lzxue1989的提示,我从现象看也觉得是office的自动维护等特殊处理,但因为客户以前用VBA可以控制剪贴板,这次VSTO的项目也非得要求能控制,还希望能提示一些可能的对应方法,如果绝对不可以,能否提示微软官方的说明资料,因为项目到了最后阶段,要给客户给出充分的理由才行,还烦请版主和各位大虾帮助。谢谢! @@小虫不才,找了许久也没有合适的能充分说明的资料。
回复 点赞
csdn_风中雪狼 2013年01月04日
Clipboard.Clear(),清空的是系统剪贴板, 而office是多重剪贴板,就像版主所说的一样,他会自动维护
回复 点赞
sxd0081 2013年01月04日
十分感谢版主,录制宏的方法知道的,但这次项目是不允许使用宏的XLSX文件,单纯的C#代码; 另外通过宏可以控制Ctrl+V的处理,但右键菜单等其它操作客户还是可以选择的,没有可控制的方法,所以一直在找控制剪贴板的方法。
回复 点赞
没错,Office从2000开始,引入了多重剪贴板,它会维护系统剪贴板上的支持的剪贴项,而不受剪贴板本身制约。
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告