C#Winforms应用程序,Windows 10。
表单有一个richtextbox和一个图表(都是MS)。当前具有将richtextbox复制到剪贴板的功能:
Clipboard.SetText(rtbContents.Rtf, TextDataFormat.Rtf);
以及将图表作为图像复制到剪贴板的功能:
using (MemoryStream ms = new MemoryStream())
{
chart1.SaveImage(ms, ChartImageFormat.Bmp);
Bitmap bm = new Bitmap(ms);
Clipboard.SetImage(bm);
}
需要一个函数将两者作为一个单元进行复制(富文本位于顶部,图像位于下方),以便ctrl-v将两者粘贴到Word文档中。
尝试了IDataObject,在对象中存储富格文本时遇到了问题,并且没有丢失颜色、字体大小和特殊字符。看起来IDataObject一次只能粘贴一件东西,只需感知目标应用程序最可能需要的东西。
尝试使用DrawString组合bmp,在富格文本中保留多种颜色时遇到问题,以及组装或连接位图。
尝试了CopyFromScreen,在使用多个监视器定位和确定实际位置(相对于容器的这个.location.X,而不是屏幕)时遇到问题,并且不完全符合规范,因为如果richtextbox隐藏或浮动,则不会在顶部显示它。更不用说,如果您尝试调试它,它会复制Visual Studio的一块显示。
开源第三方解决方案可能还可以,寻找了一些,但没有发现任何可以实现此功能的方法。Win32 API调用将是最后的选择。
提前感谢您的帮助。