2013-04-29 58 views
5

我試圖同時放入HTML和純文本的剪貼板中,以便支持HTML的編輯器可以粘貼HTML,而其他編輯器可以使用純文本。如何將HTML和文本都複製到剪貼板?

Clipboard.SetData(DataFormats.Html, htmlWithHeader); 
Clipboard.SetData(DataFormats.UnicodeText, plainText); 

但只有最後一種格式實際上被放到剪貼板。在上面的示例中,剪貼板將只包含明文(如Clipboard.GetDataObject().GetFormats()所示)。如果我換行,剪貼板將只有HTML格式。

如何將兩種格式同時放入剪貼板?

回答

15

您不能使用Clipboard.SetData來設置HTML和純文本。 SetData的第二次調用將清除通過第一次調用設置的剪貼板的內容並存儲新數據。

您應該使用DataObjectClipboard.SetDataObject()

例子:

DataObject dataObj = new DataObject(); 
dataObj.SetData(DataFormats.Html, htmlWithHeader); 
dataObj.SetData(DataFormats.Text, plainText); 

Clipboard.SetDataObject(dataObj); 
+2

難道不是更好檢索什麼是'Clipboard'然後創建過的那個,然後添加你的誰的項目你'DataObject'?這樣你不會刪除現有的'剪貼板'日期? – 2013-04-29 20:05:20

+3

@鮑勃,不!這將創建一個混合franken-clip,它可以有來自不同應用程序的數據。假設你在剪貼板上有RTF,那麼你從一個應用程序中添加明文,從另一個應用程序中添加html,然後從另一個應用程序中添加位圖。當你粘貼到記事本中時,你會得到明文。當你粘貼到MS Paint中時,你會得到位圖。當你粘貼到WinWord時,誰知道?這不是剪貼板應該工作的方式。 – 2013-04-30 15:01:48