Не может в оба конца формат HTML в буфер обмена - PullRequest
1 голос
/ 07 декабря 2008

Я хочу написать 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 ]

2 голосов
/ 07 декабря 2008

Когда вы копируете данные из браузера в буфер обмена, он помещает одни и те же данные в буфер обмена в нескольких форматах, включая текст и HTML. Таким образом, вы можете прочитать данные обратно в текстовом или HTML-формате. Однако, когда вы вызываете SetText здесь, вы ТОЛЬКО передаете в формате HTML, поэтому при использовании обычного GetText текстовая версия в буфере обмена отсутствует, и вы получаете нулевое значение.

Вы можете поместить в буфер обмена несколько форматов одновременно (т. Е. Как текст, так и HTML), используя IDataObject, но вы должны выполнить перевод между форматами самостоятельно, прежде чем поместить данные в буфер обмена. Вот пример того, как использовать IDataObject здесь .

0 голосов
/ 07 декабря 2008

Я могу воспроизвести, что это не работает ... var text2 = Clipboard.GetText(); возвращает "" каждый раз ...

(изменить) Быстрый поиск дает это , что кажется по теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...