我的 .NET 程序需要将剪贴板存着的HTML文档进行处理,但我不知道要怎样处理。我查询了相关资料,使用Windows 剪贴板的 CF_HTML 格式数据的确容易让人搞胡涂,所以总结了一下。
CF_HTML是UTF-8数据,要得到的是string数据,所以存取牵涉到字符编码。
1.从剪贴板读取CF_HTML
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
2.把CF_HTML存入剪贴板,DataObject 类型数据myDataObject 用来存CF_HTML 和String 混合数据。
DataObject myDataObject
=
new
DataObject();
MemoryStream sMem = new MemoryStream(byteHtml.Length);
byte [] byteHtml = Encoding.UTF8.GetBytes(sData);
sMem.Write(byteHtml, 0 , byteHtml.Length);
myDataObject.SetData(DataFormats.Text, stringText);
myDataObject.SetData(DataFormats.Html, sMem);
Clipboard.SetDataObject(myDataObject, true );
MemoryStream sMem = new MemoryStream(byteHtml.Length);
byte [] byteHtml = Encoding.UTF8.GetBytes(sData);
sMem.Write(byteHtml, 0 , byteHtml.Length);
myDataObject.SetData(DataFormats.Text, stringText);
myDataObject.SetData(DataFormats.Html, sMem);
Clipboard.SetDataObject(myDataObject, true );
关于更加详细的剪贴板操作可以看章立民的《Visual C# 2005程序开发与界面设计秘诀》中关于剪贴板操作的章节,或者 http://blog.csdn.net/lightningdelove/archive/2006/12/22/1453039.aspx