关于c#:无法将html格式转发到剪贴板

Can not round trip html format to clipboard

我想写HTML格式,但我甚至不能用一个简单的msdn示例。

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

这个控制台应用程序,一个剪贴板往返程序,对任何人都有效吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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();
    }
}


将数据从浏览器复制到剪贴板时,它会将相同的数据以多种格式(包括文本和HTML)放入剪贴板。所以您可以以文本或HTML格式读取数据。但是,当您在这里调用settext时,您只传递HTML格式,所以当您使用常规的getext时,剪贴板上没有文本版本,您将得到空值。

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


我可以复制它不起作用…var text2 = Clipboard.GetText();每次返回""

(编辑)快速搜索会产生这个问题,这似乎是在讨论这个话题。