2008-12-06 41 views
1

我想写Html格式,但我甚至不能得到一个简单的MSDN示例它的工作。不能往返html格式到剪贴板

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

这是否控制台应用程序,剪贴板轮卸料,工作的人?

 
using System; 
using System.Windows; //Need to add a PresentationCore or System.Windows.Forms reference 

class Program { 
    [STAThread] 
    static void Main(string[] args) { 
     Console.WriteLine("Copy a small amount of text from a browser, then press enter."); 
     Console.ReadLine(); 

     var text = Clipboard.GetText(); 
     Console.WriteLine(); 
     Console.WriteLine("--->The clipboard as Text:"); 
     Console.WriteLine(text); 

     Console.WriteLine(); 
     Console.WriteLine("--->Rewriting clipboard with the same CF_HTML data."); 
     //***Here is the problem code*** 
     var html = Clipboard.GetText(TextDataFormat.Html); 
     Clipboard.Clear(); 
     Clipboard.SetText(html, TextDataFormat.Html); 

     var text2 = Clipboard.GetText(); 
     Console.WriteLine(); 
     Console.WriteLine("--->The clipboard as Text:"); 
     Console.WriteLine(text2); 

     var isSameText = (text == text2); 
     Console.WriteLine(); 
     Console.WriteLine(isSameText ? "Success" : "Failure"); 

     Console.WriteLine(); 
     Console.WriteLine("Press enter to exit."); 
     Console.ReadLine(); 
    } 
} 

回答

2

将数据从浏览器复制到剪贴板时,它将多个格式的相同数据放到剪贴板上,包括文本和HTML。因此,您可以以文本或HTML格式读取数据。但是,当您在此处调用SetText时,您仅以HTML格式传递,因此当您使用常规GetText时,剪贴板上没有文本版本,并且返回null。

您可以使用IDataObject将多种格式一次放入剪贴板(即文本和HTML),但在将数据放入剪贴板之前,您必须自己在格式之间进行翻译。有一个如何使用IDataObject here的例子。

0

我可以重现它不工作...的var text2 = Clipboard.GetText();回报每次"" ...

(编辑) 快速搜索产量this,这似乎在题目。

+0

感谢您对它进行测试。 我也试过你的参考代码。我也无法做到这一点。 – jyoung 2008-12-06 23:38:34