首页 文章

不能往返html格式到剪贴板

提问于
浏览
1

我想写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

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

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

  • 2

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

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

相关问题