No se puede redondear el formato HTML al portapapeles
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(); } }
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.