們一般在Winform的開發中,需要使用HTML的地方,很多時候,需要用到WebBrowser這個控件,這個控件是引用了MSHTML.dll這個COM類庫的,在開發的時候感覺很好,很強大,可是發布給客戶的時候,很多時候,就因為這個COM控件,會出現很多令人頭痛的問題,因為這個控件導致的問題,也有很多解決方法,但是問題還是經常發生。
我曾經修改完成過一個HTML Editor的控件(WinForm界面開發之“HTML內容編輯控件” ),用來集成HTML郵件發送的,後來發現在很多使用客戶的電腦上,點擊該軟件後沒有反應,或者直接跳出錯誤對話框,原因就是使用WebBrowser這個控件,而這個控件就是屬於MSHTML.dll程序集的,弄了很久也沒有能夠在虛擬機上(只安裝了Dotnet framework2.0),因此不知道究竟哪裡出了問題,因為我已經能把網上所有方法都嘗試過了,包括把程序集部署到Assembly中,在開發環境中把C:Program FilesCommon FilesMerge Modulesvs_piaredist.exe 拷貝到虛擬機上進行安裝,好像也是不行的,郁悶了很久。。。。
mshtml組件引用的問題
下面是一些解決問題的文章:
參考文章地址:
http://www.codeproject.com/KB/miscctrl/csEXWB.aspx?msg=2814607#xx2814607xx
這個控件很好,不過好像對支持中文有點問題。實現HTML編輯的控件界面是:
其源碼地址是在:http://code.google.com/p/csexwb2/downloads/list 上。
本人在使用中,如果在Edit編輯框中有中文字符,在Edit和Source中切換的時候,如果在Source的選項輸入一些其他的字符 ,就會得到亂碼,因此也是很麻煩的事情,本來想修改其源碼的,發現也是一個C++的源碼,實現思路很復雜。
不過如果我們只是把Source中的HTML作為一個展示,而不做修改的話,那麼就不會出現亂碼,不過這個不是好的方法,因為我們如果不能修改HTML的話,干脆就只要一個Edit中的HTML編輯頁面就得了。
其他的模仿實現HTML編輯的控件或者程序,總的來說就是界面太丑,功能太簡單了,一般是沒有什麼用處的。
如果不使用微軟這個自帶的HTML浏覽器控件,那麼還有一個代替的選擇,就是使用另外一個COM控件,但是相對比較小,不依賴於MSHTML.dll程序集的。