2013-04-29 3 views
5

Sto cercando di inserire negli appunti la parte HTML e il testo normale allo stesso tempo, in modo che gli editor HTML-in grado di incollare HTML, e altri editor potrebbero utilizzare testo normale.Come copiare entrambi - HTML e testo negli Appunti?

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

Ma solo l'ultimo formato viene effettivamente inserito negli appunti. Nell'esempio sopra, gli appunti conterrebbero solo testo in chiaro (come mostrato da Clipboard.GetDataObject().GetFormats()). E se scambio le righe, gli appunti avranno solo il formato HTML.

Come posso inserire entrambi i formati negli Appunti allo stesso tempo?

risposta

15

NON è possibile utilizzare Clipboard.SetData per impostare sia l'HTML che il testo normale. La seconda chiamata di SetData cancellerà il contenuto degli appunti che è stato impostato dalla prima chiamata e memorizzerà i nuovi dati.

È necessario utilizzare DataObject e Clipboard.SetDataObject().

Esempio:

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

Clipboard.SetDataObject(dataObj); 
+2

Non sarebbe meglio per recuperare quello che era in 'Clipboard' quindi creare il vostro' DataObject' fuori di quel Allora aggiungi la tua Who macchine? In questo modo non rimuovi la data 'Clipboard' esistente? –

+3

@Bob, NO! Ciò creerebbe una clip ibrida, che potrebbe avere dati da diverse app. Supponete di avere RTF negli appunti, quindi aggiungete testo in chiaro da un'app, html da un'altra app e quindi bitmap da un'altra app. Quando si incolla nel blocco note, si ottiene il testo in chiaro. Quando si incolla in MS Paint, si otterrà la bitmap. Quando si incolla in WinWord, chi lo sa? Questo non è il modo in cui gli appunti dovrebbero funzionare. –