Impossible d'aller et venir format html au presse-papier
Question
Je souhaite écrire le format HTML, mais je ne peux même pas obtenir un exemple MSDN simple pour qu'il fonctionne.
http://msdn.microsoft.com/en-us/library /tbfb3z56.aspx
Cette application console, un tripleur rond dans le presse-papiers, fonctionne-t-elle pour n'importe qui?
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(); } }
La solution
Lorsque vous copiez des données à partir d'un navigateur dans le presse-papiers, les mêmes données sont insérées dans le presse-papiers dans différents formats, notamment en texte et en HTML. Vous pouvez donc lire les données au format texte ou HTML. Cependant, lorsque vous appelez SetText ici, vous passez UNIQUEMENT au format HTML. Par conséquent, lorsque vous utilisez le GetText standard, il n'y a pas de version texte dans le presse-papiers et vous obtenez la valeur null.
Vous pouvez insérer plusieurs formats dans le presse-papiers à la fois (c'est-à-dire, texte et HTML) en utilisant IDataObject, mais vous devez effectuer la traduction entre les formats vous-même avant de placer les données dans le presse-papiers. Voici un exemple d'utilisation de IDataObject ici .
Autres conseils
Je peux reproduire que cela ne fonctionne pas ... le var text2 = Clipboard.GetText ();
renvoie à "<> code> à chaque fois ...
(éditer) Une recherche rapide génère cette , qui semble sur le sujet.