我需要把一段文字和一张图片同时拷贝到clipboard中,之后用户可以把通过Ctrl+V把文字和图片黏贴到word或者excel。注意,把文字和图片拷贝到clipboard中我们可以控制,但用户paste时,我们是无法控制的。
            IDataObject dataobj = new DataObject();
            dataobj.SetData(DataFormats.UnicodeText, info);
            dataobj.SetData(DataFormats.Bitmap, img);
            Clipboard.SetDataObject(dataobj, true);
我试过上面的方法,但黏贴的时候,只有文字被黏贴。冰天雪地跪求高人指点~
ps:当我们在word中复制时,里面的文字和图片也会被放到clipboard中,之后内容可以轻易的黏贴到wordpad,excel里。请问有没有高人知道,在word里同时复制文字和图片时,是以什么格式存到clipboard上去的?

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.clipboard.getdataobject.aspxif(clipboard.contains())
     {
    IDataObject iData = Clipboard.GetDataObject();
    }你试试这个
      

  2.   

    @1楼:
    也可以是图片啊 word里就可以同时copy文字和图片呀。
      

  3.   

    @2楼:
    问题的关键是 对paste无法掌控 用户可以选择什么时候paste 以及是paste到word还是excel
    所以我在想 要以什么格式把文字和图片同时放到剪贴板中 才能word里同时对文字和图片的copy一样 可以paste到wordpad和excel中以我上面那种方式 储存到剪贴板 paste的时候只有文字 图片出不来
      

  4.   

    可以设置为HTML格式的文档            StringBuilder sb = new StringBuilder();
                sb.Append(@"Version:0.9
                    StartHTML:71
                    EndHTML:170
                    StartFragment:140
                    EndFragment:160
                    StartSelection:140
                    EndSelection:160");
                sb.Append("<html><body>");
                sb.AppendFormat("<span>{0}</span>", "Hello World!");
                sb.AppendFormat("<img src='{0}' />", @"C:\1.png");
                sb.Append("</body></html>");
                Clipboard.SetData(DataFormats.Html, sb.ToString());
      

  5.   

    @5楼:
    RTF在word里是支持的 但excel不兼容
    所以我想找 word里copy到剪切板时用的什么格式 
      

  6.   

    @6楼:
    copy时 图片是bitmap格式 不能用文件路径啊
      

  7.   

    你Copy的时候不会在 Temp文件夹里存个文件副本啊?还可以将图片转成Base64格式的编码,有些浏览器能支持,不过Word是不是支持就不知道了
      

  8.   

    @9楼:
    我懂你的意思 可是在word和excel里paste我无法控制啊 到时候还是从clipboard里取内容了
      

  9.   

    @10楼:
    在word和excel里paste的时候 文字和图片要能正常显示出来 所以我想知道在word里同时copy的文件和图片 是可以在excel和wordpad里正常paste出来的 我想知道它是以什么格式存到clipboard里的
      

  10.   

    粘贴的时候又不用管的,上面的代码我都测试过了,可以把图像和文字都粘贴到Word或者Excel中
      

  11.   

    Copy的时候总是在你的程序中的吧,如果Copy也不在你程序中,那你管他干嘛。
    Copy的时候把内存图像存图片不会?
      

  12.   

    @14楼:
    你的方法确实可行 但把图片保存成文件 放在硬盘上会有一些小瑕疵 比如 临时文件夹的权限问题 时间长了占用太多硬盘空间等。我研究了下在word里copy文字和图片时 clipboard里的格式情况 发现在单独copy图片的时候 里面有很多图片格式 比如bitmap, Png, Gif等 但当文字和图片一起拷贝时 里面却没有图片的格式              IDataObject obj = Clipboard.GetDataObject();
                string[] formats = obj.GetFormats();用上面这个方法可以看到剪切板里的所有 格式及其对应的内容 我看了下clipboard里的Rich Text Format格式里对应的内容 发现图片似乎是以位图的格式保存在里面希望高手能指点迷津啊
      

  13.   

    弱弱的冒泡一句
    如果我没记错的话 office 软件 有自己的剪贴板?、、、
      

  14.   

    @18楼:
    office是有自己的剪切板 可是它应该也需要用windows的剪切板吧 否则在非office软件里黏贴的时候 复制的内容就得不到了感觉单独复制图片的时候 是以bitmap的形势存在clipboard里的 而当文字和图片一起copy的时候 就没有bitmap这样的图片格式了 图片似乎变成btye的形势和文字一起放在Rtf格式对应的object里了还望高人指路啊
      

  15.   

    @18楼:
    是的 我觉得copy的时候 也会用到windows剪贴板吧 否则copy到非office软件时 就会有问题
      

  16.   

    word copy 进 execl    会不会是 xml 格式?感觉 从 ie copy ,进 office 时 一定有问题,即便copy的是字 也要比 copy到 notepad 慢,好像是word 对剪贴板的内容进行处理另外 不是有个 Clipboard.SetImage()/Clipboard.GetImage();Clipboard.GetText/SetText()