2014-10-02 137 views
0

有沒有像最大內容寬度一樣強制WebBrowser的方法?我想顯示html內容(全部只是樣式文本),沒有水平滾動,只能垂直滾動。所以我們可以說一個消息This is a test message, that has no other purposeWinforms WebBrowser設置最大內容寬度

This is a test 
message, that 
has no other 
purpose 

會顯示,寬度垂直滾動條的存在showen如果需要的話。

+0

你看過mdsn嗎? http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser(v=vs.110).aspx有一個寬度屬性,您可以設置爲您的屏幕/窗體的寬度 – jbutler483 2014-10-02 16:04:15

+1

添加CSS根據需要? 'wb.Document.Body.Style =「overflow-y:scroll;」;'? – 2014-10-02 16:07:44

+0

@ jbutler483我能找到的所有東西都是控件的尺寸,我錯過了什麼? – pikausp 2014-10-02 16:15:36

回答

0

WebBrowser支持一些CSS樣式屬性,您可以將其作爲內聯樣式插入到內容的<head>部分。你想要的那個是width;把它設置爲一個默認的正文類的百分比(可能介於90-100之間),以及一個顯式的類,用於任何你可以確定具有足夠大小的img標籤(你怎麼做取決於內容;一些圖像是以其原生尺寸命名,或者可以在標記中設置width屬性以幫助提高渲染速度;如果其他所有方法都失敗,則可以使用WebBrowser.Document屬性通過ID訪問DOM元素並獲取其屬性),並且內容將調整爲適合您的WebBrowser控件的寬度。

但是,有一個警告。 WebBrowser的默認渲染器(基於IE v6.1)不支持max-width屬性(根據W3schools文檔,在IE 7中首次完全支持)。這將是更好的選擇,而不是width,因爲它會告訴瀏覽器在必要時調整較小的尺寸以適應,但不會像width: X%那樣將圖像強制爲大於實際尺寸。無論您的「顯着大小」的閾值是什麼,在該欄下方都會有一個圖像,會導致小窗口大小的水平滾動頭痛,因爲它不會調整大小,並且圖像恰好位於該欄的上方,看起來很荒謬窗口大小,因爲它調整大小。

有一種方法可以迫使IE在逐個應用程序的基礎上通過Windows註冊表使用更現代化的渲染器,但這樣做很痛苦,因爲註冊表更改需要提升用戶權限才能觸發UAC提示(並且您的最終用戶可能沒有管理權限)。最好有一個安裝程序提供一些自定義操作,以便在安裝時爲您執行此操作,或者如果您在美國公司,請讓管理員通過組策略推送註冊表腳本(對於任何相同的密鑰,電腦)。

要使圖像的行爲與沒有管理員權限的運行時的max-width屬性類似,您可以在內容的頭部添加一些HTML,從一些穩定的Web源導入JQuery並定義resize事件處理函數爲文件。此事件應查詢文檔中的所有圖像,並使用它們的naturalHeightnaturalWidth(代表每個圖像的原始尺寸)及其父寬度將它們的尺寸設置爲方向正確的最佳擬合或「自然」尺寸更小。

哪個解決方案的工作量少取決於將正確的代碼放在正確的位置上的交易規模有多大,與獲取註冊表更改的交易規模有多大有關。