zoukankan      html  css  js  c++  java
  • 关于Clipboard剪切板获取值为NULL问题解决方法

    一、问题

    在word转换成图片时,遇到word文件内容copy到剪切板后,使用但剪切板内容获取值为null。本人之前介绍的C#操作word文档和转换成图片随笔中WordtoImage()方法出现问题。

     document.Content.CopyAsPicture(); //拷贝到粘贴板
     IDataObject data = Clipboard.GetDataObject();//Q:null?

    二、解决方案

    (1)在winform中把这个方法放入一个按click事件中。

    之前介绍的word转换成图片,是编写winform项目的一个demo,这个剪切板值可以正常获取值。但是把这个方法封装成一个静态帮助类时,这里就会出错。

    这里给出word转换成图片,在winform中按钮click事件的方法代码:

      private void btnWordToIamge_Click(object sender, EventArgs e)
            {
                List<Bitmap> offbmList = new List<Bitmap>();
                Bitmap[] wordbm;
                string OutputPath = @"************";//图片保存路径
    
                wordbm = wordDocement.WordtoImage(filepath);
                int i = 0;
                foreach (var item in wordbm)
                {
                    i++;
                    item.Save(OutputPath + i.ToString() + "." + "Jpeg", ImageFormat.Jpeg);
                }
            }

    这里WordtoImage()方法已在我的博客 C#操作word文档和转换成图片 给出,这里就不在重复,这里只是解决Clipboard为null问题。

    二、在线程中使用单线程单元,

    对于STA和MTA,本人刚刚接触,看了些许的资料,同时转载一一篇STA和MTA的区别的文档,勉强理解点。

    针对把WordtoImage()方法和word操作方法一起封装后,剪切板无法得到值,在外部调用WordtoImage()方法时需开启线程....等

    话不多说直接上代码:

    Thread th_wordprocess = new Thread(new ThreadStart(WordOperate));
    th_wordprocess.SetApartmentState(ApartmentState.STA);//这句是关键 th_wordprocess.Start();

    然后在WordOperate(),调用WordtoImage()方法

  • 相关阅读:
    正则表达式体会
    checkbox、全选反选,获取值
    弹出窗体值回调
    页面点击任意js事件,触发360、IE浏览器新页面
    XML增、删、改
    面试题
    行列转换
    DataTable 和Json 字符串互转
    前台js与后台方法互调
    文件与base64二进制转换
  • 原文地址:https://www.cnblogs.com/machenghu/p/6489873.html
Copyright © 2011-2022 走看看