如何将HTML和文本复制到剪贴板?

ale*_*lex 7 .net c# windows clipboard

我正在尝试同时放入HTML和纯文本的剪贴板,以便支持HTML的编辑器可以粘贴HTML,其他编辑器可以使用纯文本.

Clipboard.SetData(DataFormats.Html, htmlWithHeader);
Clipboard.SetData(DataFormats.UnicodeText, plainText);
Run Code Online (Sandbox Code Playgroud)

但只有最后一种格式实际上放在剪贴板上.在上面的示例中,剪贴板仅包含明文(如图所示 Clipboard.GetDataObject().GetFormats()).如果我交换行,剪贴板将只有HTML格式.

如何将两种格式同时放入剪贴板?

Akr*_*awy 16

您不能Clipboard.SetData用于设置HTML和纯文本.SetData的第二次调用将清除第一次调用设置的剪贴板内容并存储新数据.

您应该使用DataObjectClipboard.SetDataObject().

例:

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

Clipboard.SetDataObject(dataObj);
Run Code Online (Sandbox Code Playgroud)

  • @Bob,不!这将创建一个混合的franken-clip,它可以包含来自不同应用程序的数据.假设你在剪贴板上有RTF,然后你从一个应用程序添加明文,从另一个应用程序添加html,然后从另一个应用程序添加位图.当您粘贴到记事本中时,您将获得明文.粘贴到MS Paint时,您将获得位图.当你粘贴到WinWord时,谁知道?这不是剪贴板应该工作的方式. (3认同)
  • 检索"剪贴板"中的内容然后创建你的`DataObject`然后添加你的项目是不是更好?这样你就不会删除现有的`剪贴板'日期? (2认同)