2013-04-29 14 views
5

私は、HTML対応のエディタがHTMLを貼り付け、他のエディタがプレーンテキストを使用できるように、HTMLとプレーンテキストのクリップボード部分を同時に挿入しようとしています。HTMLとテキストの両方をクリップボードにコピーする方法は?

Clipboard.SetData(DataFormats.Html, htmlWithHeader); 
Clipboard.SetData(DataFormats.UnicodeText, plainText); 

実際に最後のフォーマットのみがクリップボードに格納されます。上記のサンプルでは、​​クリップボードには平文のみが含まれています(Clipboard.GetDataObject().GetFormats())。私が行を入れ替えると、クリップボードはHTML形式しか持たないでしょう。

どのようにして両方のフォーマットを同時にクリップボードに入れることができますか?

答えて

15

Clipboard.SetDataをHTMLとプレーンテキストの両方に使用することはできません。 SetDataの2回目の呼び出しは、最初の呼び出しで設定されたクリップボードの内容をクリアし、新しいデータを格納します。

DataObjectClipboard.SetDataObject()を使用してください。

例:

DataObject dataObj = new DataObject(); 
dataObj.SetData(DataFormats.Html, htmlWithHeader); 
dataObj.SetData(DataFormats.Text, plainText); 

Clipboard.SetDataObject(dataObj); 
+2

Clipboard' 'にあったものを取得するために、より良いではないでしょうが、その後、あなたの方の項目を追加しているのを離れてあなたの' DataObject'を作成しますか?そうすれば、既存の 'Clipboard'日付は削除されませんか? –

+3

@Bob、NO!そうすれば、さまざまなアプリからのデータを持つことができるハイブリッドフランケンクリップが作成されます。クリップボードにRTFがあり、あるアプリからプレーンテキストを、別のアプリからHTMLを、そして別のアプリからビットマップを追加したとします。メモ帳に貼り付けると、平文が得られます。 MS Paintに貼り付けると、ビットマップが得られます。 WinWordに貼り付けると、誰が知っていますか?これは、クリップボードが動作するはずの方法ではありません。 –