是否可以在加载内容之前更改WebBrowser控件的背景颜色?

我有一个页面,其中包含经常更新内容的WebBrowser控件。 我使用的是黑色背景,但在加载WebBrowser内容之前的默认颜色是白色。 我可以通过加载一个背景设置为黑色的小HTML字符串来更改它,但仍然有一段时间WebBrowser显示为白色,因此会出现一种闪烁效果。

我的问题是:有没有办法改变WebBrowser底层控件的颜色?

我已经尝试了一些解决方案,比如隐藏WebBrowser直到内容已经加载,但是这些都没有感觉非常优雅并且不能很好地工作。

我已经找到了适用于我的情况的东西。 它不一定是最优雅的,但它可以完成工作。

我将WebBrowser的默认Opacity设置为0.然后,我为LoadCompleted事件附加一个事件处理程序:

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

现在,在我加载一个新的HTML页面之前,我将Opacity设置为0,以便在渲染新的HTML时隐藏浏览器,这样就没有背景的闪烁。 HTML完成加载后,将触发事件,新的HTML页面将按预期显示。

我同意johnforrest。 在XAML代码中将默认不透明度设置为0并将不透明蒙板设置为黑色要好得多。 之后在LoadComplete事件中;

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

没有闪烁…… !!

假设您不希望根据其他建议更改实际不透明度,则可以使用HTML更改初始显示的背景颜色:

  this.WebBrowser1.Navigate("about:blank"); IHTMLDocument2 _doc = this.WebBrowser1.Document.DomDocument as IHTMLDocument2; _doc.write(""); 

我发现改变控件的不透明度或可见性并不能完全隐藏闪烁。 我的解决方案是将控件的高度设置为0,然后在加载后将其重置,如下所示:

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