關於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()方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM