2011-04-09 195 views
12

我有一個頁面,其中包含經常更新內容的WebBrowser控件。我正在使用黑色背景,但加載WebBrowser的內容之前的默認顏色是白色。我可以通過加載一個背景設置爲黑色的小型HTML字符串來改變它,但仍有一段時間,WebBrowser顯示爲白色,因此會出現閃爍效果。加載內容之前可以更改WebBrowser控件的背景顏色嗎?

我的問題是:有沒有辦法改變WebBrowser底層控件的顏色?

我已經嘗試了一些解決方案,例如隱藏WebBrowser,直到內容被加載,但沒有一個感覺非常優雅,並且不能很好地工作。

回答

9

我已經想出了一些適用於我的案例。這不一定是最優雅的,但它完成了工作。

我設置WebBrowser爲0的默認Opacity然後,我附上了LoadCompleted事件的事件處理程序:

private void browser_Post_LoadCompleted(object sender, NavigationEventArgs e) 
{ 
    browser_Post.Opacity = 1; 
} 

現在,我打開一個新的HTML頁面之前,我設置了Opacity回0,所以當新的HTML被渲染時,它隱藏了瀏覽器,所以沒有背景閃爍。當HTML完成加載後,事件將觸發,新的HTML頁面將按預期顯示。

+1

web瀏覽器沒有Opacity屬性在.net 3.5 ... – PatrickB 2015-01-07 10:29:36

3

我同意johnforrest。將XAML代碼中的默認不透明度設置爲0並將不透明度遮罩設置爲黑色更好。之後,在LoadComplete事件中;

private void dataBrowser_LoadCompleted(object sender,NavigationEventArgs e) 
{ 
    dataBrowser.OpacityMask = null; 
    dataBrowser.Opacity = 1; 
} 

沒有閃爍......!

3

假設你不想改變實際的不透明度按照其他建議,您可以使用HTML更改初始顯示的背景色:

this.WebBrowser1.Navigate("about:blank"); 
    IHTMLDocument2 _doc = this.WebBrowser1.Document.DomDocument as IHTMLDocument2; 
    _doc.write("<html><body style=\"background: #f0f0f0\"></body></html>"); 
+0

感謝我得到的解決方案,從你的答案 – MansinhDodiya 2013-05-16 09:38:34

2

我發現改變不透明度或能見度的控制不會完全隱藏閃爍。我的解決方法是將控件的高度設置爲0,然後將其裝入後重新回來,這樣的:

double savedHeight = browser.ActualHeight; 
browser.Height = 0; 

browser.Navigated += (sender, e) => 
{ 
    browser.Height = savedHeight; 
} 

browser.Navigate(...);