无法将HTML格式往返复制到剪贴板

3

我想写HTML格式,但是我甚至无法让一个简单的MSDN示例运行起来。

http://msdn.microsoft.com/en-us/library/tbfb3z56.aspx

这个控制台应用程序,一个剪贴板往返程序,有人能用吗?

using System;
using System.Windows; //需要添加PresentationCore或System.Windows.Forms引用
class Program { [STAThread] static void Main( string[] args ) { Console.WriteLine( "从浏览器复制少量文本,然后按回车键。" ); Console.ReadLine();
var text = Clipboard.GetText(); Console.WriteLine(); Console.WriteLine( "---> 剪贴板为文本:" ); Console.WriteLine( text );
Console.WriteLine(); Console.WriteLine( "---> 用相同的CF_HTML数据重写剪贴板。" ); //***这里是问题代码*** var html = Clipboard.GetText( TextDataFormat.Html ); Clipboard.Clear(); 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(); } }
2个回答

3
当你从浏览器复制数据到剪贴板上时,它会将相同的数据以多种格式放入剪贴板中,包括文本和HTML。因此,您可以以文本或HTML格式读取数据。然而,在这里调用SetText时,您只传递了HTML格式,因此当您使用常规的GetText时,剪贴板上没有文本版本,您会收到null。
您可以使用IDataObject一次将多个格式(即文本和HTML)放入剪贴板中,但必须在放置数据之前自行进行格式转换。这里有一个如何使用IDataObject的示例here

0

我可以重现它不起作用的情况...每次var text2 = Clipboard.GetText();返回""...

(编辑) 快速搜索得到this,似乎与主题相关。


感谢你的测试。我也尝试了你提供的参考代码,但是我也无法使其正常工作。 - jyoung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接