При работе с буфером обмена из C# выяснилось, что вставить туда HTML так, чтобы программы типа Word распознавали его не как текст, а именно как HTML не совсем просто, под катом пример.
Собственно, для вставки HTML в буфер, его нужно специальным образом подготовить. Вот таким методом:
rnrn"Собственно, для вставки HTML в буфер, его нужно специальным образом подготовить. Вот таким методом:
public static string PrepareHtmlToClippboard(stringhtml)
{
Encoding enc = Encoding.UTF8;
string begin = "Version:0.9rnStartHTML:{0:000000}rnEndHTML:{1:000000}"
+ "rnStartFragment:{2:000000}rnEndFragment:{3:000000}rn";
string html_begin = "rnrn"
+ "
+ " content="text/html; charset=" + enc.WebName + "">rn"
+ "HTML clipboard rn
+ "";
string html_end = "rn
rnrn"; string begin_sample = String.Format(begin, 0, 0, 0, 0);
intcount_begin = enc.GetByteCount(begin_sample);
intcount_html_begin = enc.GetByteCount(html_begin);
intcount_html = enc.GetByteCount(html);
intcount_html_end = enc.GetByteCount(html_end);
string html_total = String.Format(
begin
, count_begin
, count_begin + count_html_begin + count_html + count_html_end
, count_begin + count_html_begin
, count_begin + count_html_begin + count_html
) + html_begin + html + html_end;
return html_total;
}
Ну и вот так это можно использовать:DataObject dataObj = new DataObject();
dataObj.SetData(DataFormats.Html, PrepareHtmlToClippboard("здесь HTML"));
dataObj.SetData(DataFormats.Text, "здесь текст, если приемник не понимает html");
Clipboard.SetDataObject(dataObj, true);
Собственно все.