无法将html格式往返剪贴板
Posted
技术标签:
【中文标题】无法将html格式往返剪贴板【英文标题】:Can not round trip html format to clipboard 【发布时间】:2010-09-25 16:58:09 【问题描述】:我想编写 html 格式,但我什至无法获得它的简单 MSDN 示例。
http://msdn.microsoft.com/en-us/library/tbfb3z56.aspx
此控制台应用程序(剪贴板往返程序)是否适用于任何人?
使用系统; 使用 System.Windows; //需要添加一个PresentationCore或者System.Windows.Forms引用 类程序 [STA线程] 静态无效主要(字符串[] args) Console.WriteLine("从浏览器复制少量文本,然后回车。"); Console.ReadLine(); var text = Clipboard.GetText(); Console.WriteLine(); Console.WriteLine("--->剪贴板作为文本:"); Console.WriteLine(文本); Console.WriteLine(); Console.WriteLine("--->用相同的 CF_HTML 数据重写剪贴板。"); //***这里是问题代码*** var html = Clipboard.GetText(TextDataFormat.Html); 剪贴板.清除(); Clipboard.SetText(html, TextDataFormat.Html); var text2 = Clipboard.GetText(); Console.WriteLine(); Console.WriteLine("--->剪贴板作为文本:"); Console.WriteLine(text2); var isSameText = ( text == text2 ); Console.WriteLine(); Console.WriteLine( isSameText ? "成功" : "失败" ); Console.WriteLine(); Console.WriteLine("按回车键退出。"); Console.ReadLine();【问题讨论】:
【参考方案1】:我可以重现它不起作用...var text2 = Clipboard.GetText();
每次都返回 ""
...
(编辑) 快速搜索会产生this,这似乎是主题。
【讨论】:
感谢您的测试。我也试过你的参考代码。我也无法让它工作。【参考方案2】:当您将数据从浏览器复制到剪贴板时,它会将相同的数据以多种格式(包括文本和 HTML)放到剪贴板上。因此,您可以以文本或 HTML 格式读取数据。但是,当您在这里调用 SetText 时,您只是传递 HTML 格式,因此当您使用常规 GetText 时,剪贴板上没有文本版本,您会返回 null。
您可以使用 IDataObject 一次将多种格式(即文本和 HTML)放入剪贴板,但在将数据放入剪贴板之前,您必须自己进行格式之间的转换。有一个如何使用IDataObjecthere的例子。
【讨论】:
以上是关于无法将html格式往返剪贴板的主要内容,如果未能解决你的问题,请参考以下文章