Impossibile round trip negli html negli appunti
Domanda
Voglio scrivere in formato HTML, ma non riesco nemmeno a farne funzionare un semplice esempio MSDN.
http://msdn.microsoft.com/en-us/library /tbfb3z56.aspx
Questa app console, uno sganciatore circolare per appunti, funziona per chiunque?
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(); } }
Soluzione
Quando copi i dati da un browser negli Appunti, li mette negli Appunti in più formati, inclusi testo e HTML. In questo modo è possibile leggere nuovamente i dati in formato testo o HTML. Tuttavia, quando chiami SetText qui, passi SOLO in formato HTML, quindi quando usi il normale GetText, negli Appunti non esiste una versione di testo e ricevi null indietro.
Puoi inserire più formati negli appunti contemporaneamente (cioè, sia testo che HTML) usando IDataObject, ma devi fare tu stesso la traduzione tra formati prima di inserire i dati negli appunti. C'è un esempio di come usare IDataObject qui .
Altri suggerimenti
Posso riprodurre che non funziona ... il var text2 = Clipboard.GetText ();
restituisce " "
ogni volta ...
(modifica) Una rapida ricerca produce questo , che sembra sull'argomento.