C# 为什么我不能粘贴复制到剪贴板的格式化文本?

C# 为什么我不能粘贴复制到剪贴板的格式化文本?,c#,winforms,C#,Winforms,我正在尝试将一些HTML文本复制到剪贴板并能够粘贴它 例如: var text = @"<html> <a href=""#"">Click me!</a><br/> </html>"; Clipboard.SetText(text, TextDataFormat.Html); 但那不是我想要的。我想要的行为是从浏览器复制HTML文本并将其粘贴到Word文档上。例如,必须保留格式。如果我不使用任何文本格式或使用TextDataFor

我正在尝试将一些HTML文本复制到剪贴板并能够粘贴它

例如:

var text = @"<html>
<a href=""#"">Click me!</a><br/>
</html>";

Clipboard.SetText(text, TextDataFormat.Html);
但那不是我想要的。我想要的行为是从浏览器复制
HTML
文本并将其粘贴到Word文档上。例如,必须保留格式。如果我不使用任何文本格式或使用
TextDataFormat.text
它粘贴文本而不设置格式


有什么方法可以实现这一点吗?

HTML数据格式并不意味着负载是纯HTML。内容的结构在中的文档中进行了描述。Version、StartHTML和EndHTML元素是必需的

以下代码将在剪贴板中放置一个HTML片段,该片段可以粘贴到理解HTML格式的应用程序中,如Word:

var text = @"Version:0.9
StartHTML:0000000055
EndHTML:0000000088
<a href='#'>Click me!</a><br/>";

System.Windows.Forms.Clipboard.SetText(text,TextDataFormat.Html);
var text=@“版本:0.9
StartHTML:0000000055
EndHTML:0000000088

“; System.Windows.Forms.Clipboard.SetText(text,TextDataFormat.Html);
如果没有这些元素,文本将无法识别为HTML负载,也无法粘贴

HTML格式可以包含多个代码段。如果有人从浏览器复制文本,HTML负载可能最终包含样式、字体和索引,这些样式、字体和索引不是实际代码段的一部分,但却是正确呈现所必需的。复制时,此问题的标题如下所示:

版本:0.9
StartHTML:0000000224
EndHTML:0000001613
起始片段:0000000 260
EndFragment:0000001577
SourceURL:https://stackoverflow.com/questions/51750187/why-i-cannot-paste-formatted-text-copied-to-clipboard#51750187

00
剪贴板类只能在设置为单线程单元(STA)模式的线程中使用。要使用此类,请确保您的Main方法标记为stathreadtribute属性@DipenShah线程是STA,否则它将抛出一个异常,如您共享的文档中所述。没有引发异常。这可能会有帮助,其中是
Clipboard.GetText(text,TextDataFormat.Html)定义?你的意思是
var text=Clipboard.GetText(TextDataFormat.Html)?@MickyD是的,我的意思是
Clipboard.GetText(TextDataFormat.Html)谢谢!这适用于Word,但不适用于google文档,但我明白了,我需要使用
obj.GetData(“HTML格式”)
以找出确切的格式并使其正常工作。
var text = @"Version:0.9
StartHTML:0000000055
EndHTML:0000000088
<a href='#'>Click me!</a><br/>";

System.Windows.Forms.Clipboard.SetText(text,TextDataFormat.Html);