2

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

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

这个控制台应用程序,一个剪贴板往返程序,适用于任何人吗?

使用系统;
使用 System.Windows;//需要添加一个PresentationCore或者System.Windows.Forms引用

类程序{
    [STA线程]
    静态无效主要(字符串[] args){
        Console.WriteLine("从浏览器中复制少量文本,然后回车。");
        Console.ReadLine();

        var text = Clipboard.GetText();
        Console.WriteLine();
        Console.WriteLine("--->剪贴板作为文本:");
        Console.WriteLine(文本);

        Console.WriteLine();
        Console.WriteLine("--->用相同的 CF_HTML 数据重写剪贴板。");
        //***这里是问题代码***
        var html = Clipboard.GetText(TextDataFormat.Html);
        剪贴板.清除();
        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();
    }
}
4

2 回答 2

3

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

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

于 2008-12-06T23:34:26.513 回答
0

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

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

于 2008-12-06T23:22:23.697 回答