WebBrowser開啟Word文檔的一些注意事項

來源:互聯網
上載者:User

標籤:

 WebBrowser開啟Word文檔的一些注意事項分類: C# word2010-03-31 21:26 5640人閱讀 評論(3) 收藏 舉報webbrowser文檔browser工具objectsql serverWebBrowser開啟Word文檔的一些注意事項2009年09月27日 星期日 17:37

忙乎了多日,終於將WebBrowser中Word工具列中搞定

    在題庫管理系統中,需要將試題顯示出來,並進行編輯。於是,每道題都儲存為一個Word檔案,並儲存在SQL Server中,在瀏覽試題庫時,用WebBrowser控制項顯示試題是最好的方法,有直觀的Word操作介面,也為試題儲存提供了方便。
    一開始是使用VS 2005中內建的Web Browser控制項來顯示。顯示正常,但很快帶來兩個問題:
    1、預設開啟時是有“審閱”工具列,如何在剛開啟時就具有“常用”工具列。
    2、沒有辦法找到對應的文檔對象,以控制Word檔案的儲存。
    在網上搜了一大堆,都是提到要使用COM對象axWebBrowser控制項,包括MSDN上的這篇文章:“如何使用 WebBrowser 控制項在 Visual C# 2005 或 Visual C# .NET 中開啟 Office 文檔”(http://support.microsoft.com/kb/304662/zh-cn)
    
    第一步:添加axWebBrowser控制項到工具箱。
    在工具箱上,單擊右鍵,使用選擇項,在COM組件中找到“Microsfot Web Browser”項,確定即可。

    第二步,向表單上添加“Microsfot Web Browser”控制項,這個地方命名為wbDocView

    第三步,需要使用WebBrowser控制項載入Word文檔時,使用以下語句:
    wbDocView.Nagivate(yourfilename);

    遇到的第一個問題:開啟第一個檔案時可以,再次開啟同一檔案時,由於檔案仍屬性於開啟狀態,無法再次開啟。表單關閉時並不會主動關閉該檔案,它要等到整個程式退出時才釋放資源。
    解決辦法:在表單的FormClosing事件中,使用下列語句關閉檔案:
    wbDocView.Navigate("about:blank");

    解決第二個問題,開啟Word檔案時,顯示常用工具列。MSDN 304662中介紹的是:
    Object refmissing = System.Reflection.Missing.Value;
    oDocument = null;
    axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing);
    我按照同樣的方法做時,總是出現“試圖吊銷一個未註冊的拖放目標 (異常來自 HRESULT:0x80040100 (DRAGDROP_E_NOTREGISTERED))”的錯誤。很長時間不能解決。
    後來,在WebBrowser控制項的NavigateComplete2事件中寫入以下代碼:
    axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing);
    果然,“審閱”工具列不再出現了,取而代之的是有“常用”、“字型”和“繪圖”三個工具列。暫時不管它了,以後再深入研究。

    解決第三個問題:適當的時候如何儲存Word檔案?
    同樣,在NavigateComplete2事件中,寫入以下代碼以擷取Document對象。
    object o = e.pDisp;
    oDocument = o.GetType().InvokeMember("Document", System.Reflection.BindingFlags.GetProperty, null, o, null);
    這裡的oDocument是定義在表單類中的一個私人欄位:object oDocument = null;
    接下來,在“儲存”按鈕的Click事件中,用以下代碼:(此時需要引入Office類庫)
    object missing = System.Reflection.Missing.Value;
    Microsoft.Office.Interop.Word.DocumentClass doc = oDocument as Microsoft.Office.Interop.Word.DocumentClass;
    doc.Save();
    此時,表單上的WebBrowser控制項會處於假死狀態,這時重新載入這個檔案就可以了:
    wbDocView.Navigate(wbDocView.LocationURL);
    雖然載入過程會有明顯的停頓與閃爍,但暫時不管它了。

 

轉寄自:http://blog.csdn.net/cqbsbjianxy/article/details/5438893

WebBrowser開啟Word文檔的一些注意事項

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.