无法将html格式往返于剪贴板

时间:2008-12-06 23:10:38

标签: c# .net html clipboard

我想编写Html格式,但我甚至无法获得一个简单的MSDN示例。

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 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

(编辑) 快速搜索会产生this,这似乎是主题。