如何复制剪贴板的整个(所有格式)

时间:2016-12-21 15:57:54

标签: c# winforms clipboard idataobject

我们需要复制并重新发布剪贴板中的内容 - 所有格式。有没有办法做到这一点?

这是用例。我们有一些小的docx / pptx / xlsx文档,在我们的Office AddIn中,我们希望允许用户拖放到word / ppt / xl中。不幸的是,最好的文档格式是html,它与实际的docx / pptx / xlsx不太接近。

所以,我的想法是我们(使用Word作为示例)创建Word文档对象的实例(我们的代码是Word AddIn,因此根据定义Word正在运行)。然后我们调用Document对象来选择所有它,然后粘贴选择。

此时剪贴板包含粘贴的文档。包括Word文档中用于复制/粘贴的无证格式。这就是我们想要使用的格式。

如果我们可以将所有剪贴板内容复制到我们的实现IDataObject的对象中并将该对象传递给Control.DoDragDrop(),那么当用户将其放在Word中的某个位置时,他们会将其放入Word中。未记录的格式,具有所有docx格式。

有办法做到这一点吗?

更新:我们需要拖放文件内容(不只是文本,完全格式化的文本,表格,形状,图表等)。

更新2:我们需要将此作为IDataObject传递给DoDragDrop(),而不是从剪贴板中粘贴。我们需要在发生时收到通知,因为我们已将IDataObject传递给Windows,而Windows则从那里获取。

1 个答案:

答案 0 :(得分:0)

事实证明这是对此的调用 - Clipboard.GetDataObject()。