我正在嘗試使用Web瀏覽器控件來獲取滾動條。但是,由於我將使用它來顯示自定義消息框的消息,因此我不希望滾動條即使不需要也會顯示 - 因爲它默認情況下似乎是這樣。爲了避免這種情況,我決定禁用控件上的滾動條,並在另一個控件(如Panel)上使用滾動條。這樣他們只會在瀏覽器頁面的內容太大而不適合時纔會出現。沒有出現在WebBrowser控件上的WCustom滾動條
雖然我已經閱讀了不少帖子,但即使在StackOverflow上,這似乎也是一個有效的解決方案,但這並未奏效。一個例子是,當我試圖在這裏使用的解決方案:
Scrolling problem with a WebBrowser control contained in a Panel control
它好像如果滾動條的網頁瀏覽器中禁用,它不會讓面板使用滾動條無論是。在設計模式下進行測試時,情況似乎如此。爲了克服這個問題,我嘗試在面板內的Web瀏覽器後面添加一個圖片框;它在設計模式下工作(調整圖片框和Web瀏覽器的大小會導致面板啓用其滾動條),但在運行時不起作用(我添加了代碼以使圖片框更改爲Web瀏覽器控件的大小 - 其本身總是調整大小以適應可滾動內容的大小)。
我也嘗試過基於ScrollableRectangle大小是否大於控件大小,以編程方式啓用和禁用Web瀏覽器的滾動條。從理論上講,這應該沒什麼問題,除非ScrollbarsEnabled屬性發生更改時,控件內的所有文本似乎都會被清除 - 因此會變回沒有滾動條。
我用下面的代碼,只要一鍵在控制按這樣做,有效地叫:
if (Output.Document.Body != null)
{
if (Output.Document.Body.ScrollRectangle.Size.Height > Output.Size.Height
|| Output.Document.Body.ScrollRectangle.Size.Width > Output.Size.Width)
Output.ScrollBarsEnabled = true;
else
Output.ScrollBarsEnabled = false;
}
else
Output.ScrollBarsEnabled = false;
同樣重要的是要注意,我還需要在HTML編輯器的解決方案,這將是在應用程序中使用,所以理想情況下,任何解決方案都不會依賴頁面加載事件等等,因爲當Web瀏覽器將設計模式設置爲開啓時,這似乎不會觸發(它需要用作HTML編輯器)。但是,在這種特殊情況下,如果沒有更好的解決方案,我可以重新啓用默認滾動條。
編輯:要清楚,我不是在談論HTML內容中的任何滾動條 - 這是無關緊要的HTML僅僅用來允許文本的靈活的格式。我只談論瀏覽器控件本身的滾動條。
任何幫助非常感謝。謝謝!
有用的解決方法,爲我工作。 +1和你和盛。 – fre0n 2010-02-23 05:21:00