HTML形式をクリップボードに往復できません
質問
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(); } }
解決
ブラウザからデータをクリップボードにコピーすると、テキストとHTMLの両方を含む複数の形式で同じデータがクリップボードにコピーされます。そのため、テキストまたはHTML形式でデータを読み戻すことができます。ただし、ここでSetTextを呼び出すと、HTML形式でのみ渡されるため、通常のGetTextを使用すると、クリップボードにテキストバージョンがなく、nullが返されます。
IDataObjectを使用して、複数のフォーマットを一度にクリップボード(つまり、テキストとHTMLの両方)に配置できますが、データをクリップボードに配置する前に、フォーマット間の変換を自分で行う必要があります。 IDataObject こちらを使用する方法の例があります。
他のヒント
機能しないことを再現できます... var text2 = Clipboard.GetText();
は毎回""
を返します...
(編集) クイック検索では、 this が得られますが、トピックについて。
所属していません StackOverflow