WebBrowser
简介
WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增。WebBrowser 类使用户可以在窗体中导航网页。
在某些桌面程序中,有时候会用到浏览器来嵌入程序中来显示网页的内容,比如图表类的显示,网页的显示非常漂亮和实现简单,推荐使用百度开源的Echart,这个开源库,使用超级简单。关于显示问题,首先想到了 WebBrowser控件,但是最近再做的一个项目里,显示不出来,因为EChart使用到了js库显示动态画面,而WebBrowser默认IE内核是IE6,太古老,可能是不显示的一个原因。升级本机自带的IE内核并不能解决问题,因为修改该控件的指定内核需要修改注册表。
解决办法
可以百度关键词:WebBrowser IE内核指定
下面讲解下该办法:
Regedit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
添加自己的程序名,值就是指定的IE内核版本参数,具体见下表
这里我指定的是11000 也就是IE11
| 值 | 说明 |
| 11001 (0x2EDF) | Internet Explorer 11. Webpages are displayed in IE11 Standards mode, regardless of the !DOCTYPE directive |
| 11000 (0x2AF8) | Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode |
| 10001 (0x2711) | Internet Explorer 10。网页以IE 10的标准模式展现,页面!DOCTYPE无效 |
| 10000 (0x02710) | Internet Explorer 10。在IE 10标准模式中按照网页上!DOCTYPE指令来显示网页。Internet Explorer 10 默认值。 |
| 9999 (0x270F) | Windows Internet Explorer 9. 强制IE9显示,忽略!DOCTYPE指令 |
| 9000 (0x2328) | Internet Explorer 9. Internet Explorer 9默认值,在IE9标准模式中按照网页上!DOCTYPE指令来显示网页。 |
| 8888 (0x22B8) | Internet Explorer 8,强制IE8标准模式显示,忽略!DOCTYPE指令 |
| 8000 (0x1F40) | Internet Explorer 8默认设置,在IE8标准模式中按照网页上!DOCTYPE指令展示网页 |
| 7000 (0x1B58) | 使用WebBrowser Control控件的应用程序所使用的默认值,在IE7标准模式中按照网页上!DOCTYPE指令来展示网页。 |
但是!
依然显示不出EChart。使用MFC的控件确认能显示,在duilib界面库实现的程序中不能显示,试了很多办法终于发现是因为EChart的DOM的width不指定就不显示。暂时不知道原因。可能是不能自适应?
同时需要关闭duilib的透明属性,否则浏览器很卡顿 。
本文介绍了WebBrowser控件在.NET Framework 2.0中的使用,用于在桌面程序中嵌入网页内容,如ECharts图表。由于WebBrowser默认使用IE6内核,可能无法正常显示ECharts等依赖现代JS库的内容。尝试通过修改注册表设置内核版本至IE11无效。最终发现问题是ECharts DOM元素未指定width导致不显示,同时在duilib界面库中需要关闭透明属性以避免卡顿。
1364

被折叠的 条评论
为什么被折叠?



