【问题标题】:How to copy both - HTML and text to the clipboard?如何将 HTML 和文本都复制到剪贴板?
【发布时间】:2016-11-19 23:31:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# .net windows clipboard


    【解决方案1】:

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

    您应该使用DataObjectClipboard.SetDataObject()

    例子:

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

    【讨论】:

    • 检索Clipboard 中的内容然后创建您的DataObject 然后添加您的谁项目不是更好吗?这样您就不会删除现有的Clipboard 日期?
    • @Bob,不!这将创建一个混合 franken-clip,其中可以包含来自不同应用程序的数据。假设剪贴板上有 RTF,然后从一个应用程序添加纯文本,从另一个应用程序添加 html,然后从另一个应用程序添加位图。当您粘贴到记事本中时,您会得到纯文本。当您粘贴到 MS Paint 中时,您将获得位图。当您粘贴到 WinWord 中时,谁知道呢?这不是剪贴板应该工作的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多