Pregunta

Quiero escribir en formato HTML, pero ni siquiera puedo obtener un simple ejemplo de MSDN para que funcione.

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

¿Esta aplicación de consola, un portapapeles de ida y vuelta, funciona para alguien?

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();
    }
}
¿Fue útil?

Solución

Cuando copia datos de un navegador en el portapapeles, coloca los mismos datos en el portapapeles en múltiples formatos, incluidos texto y HTML. Por lo tanto, puede volver a leer los datos en formato de texto o HTML. Sin embargo, cuando llama a SetText aquí, SÓLO está pasando en formato HTML, por lo que cuando usa el GetText normal, no hay una versión de texto en el portapapeles y obtiene nulo.

Puede colocar múltiples formatos en el portapapeles a la vez (es decir, texto y HTML) usando IDataObject, pero debe realizar la traducción entre formatos usted mismo antes de colocar los datos en el portapapeles. Hay un ejemplo de cómo usar IDataObject aquí .

.

Otros consejos

Puedo reproducir que no funciona ... var text2 = Clipboard.GetText (); devuelve " " cada vez ...

(editar) Una búsqueda rápida produce esto , lo que parece sobre el tema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top