日期:2014-05-17  浏览次数:20896 次

急!特急!C#不能清空OFFICE2010的剪贴板Clipboard
用C#开发Excel2010的VSTO项目,虽然使用了Clipboard.Clear(),但不能清空OFFICE2010的剪贴板Clipboard,现象是代码进行清空后,通过Clipboard.GetDataObject().GetFormats()方法查看已经没有可用数据类型了,但Excel的Sheet里边还能粘贴,另外通过FFICE2010的剪贴板监视窗口的清空button已经清空了窗口,但Excel的Sheet里边仍然能粘贴,不知什么原因,难道OFFICE2010没有和系统剪贴板进行交互管理?

------解决方案--------------------
没错,Office从2000开始,引入了多重剪贴板,它会维护系统剪贴板上的支持的剪贴项,而不受剪贴板本身制约。
------解决方案--------------------
Clipboard.Clear(),清空的是系统剪贴板,
而office是多重剪贴板,就像版主所说的一样,他会自动维护
------解决方案--------------------
实在不行时,你可以选择使用钩子!
------解决方案--------------------
引用:
实在着急,再追述一点,就是我当前的问题能否通过代码实现对粘贴操作的控制,能否在给excel2010粘贴时,只能进行[值粘贴],也就是说,格式等信息都不要。
@@刚才想先给出一些分,但好像必须结贴后才可以,Sorry!给出方法即可结贴。


没用过VSTO,但是给你一个一般性的建议。你可以在Excel中录制一个宏,Excel支持只粘贴文本而不要格式的操作。你操作完了,再停止录制宏,打开VBA编辑器,看看生成的代码,照着写。