WebBrowser修改默认白色背景
背景:在使用Winform的WebBrowser显示网页的时候,在网页还未加载完成之前会显示白色,刚好网页内容呈现黑色,这样视觉效果上就十分差,想把这层白色的去掉。
试了很久之后发现根本去不掉,应该是控件默认自带的颜色。那就只能更换思路,在网页加载完毕之后,也就是在事件DocumentCompleted中,再将webbrowser显示出来,但是坑就坑在这里,winfrom的webbrowser隐藏不了,试了很多种方式都不行比如直接.hide(),亦或是让其父容器变成collapsed
最后,想了想换成WPF的webbrowser,因为是WPF的,所以可以调用Visiablity属性,也就顺利隐藏了,还有种思路是
通过Opacity,透明属性,从0-1,但是我试了下不行。也即是说换成WPF的,是可以顺利解决这个白色背景的问题
但是因为涉及到跟网页JS交互,是需要通过获取到网页的源码,来得到其中的一些数据,Winform很简单可以使用自带的方法。代码如下:
private void bi_Click(object sender, RoutedEventArgs e)
{
var e1 = webBrowser.Document.All["size"];
string x = e1.OuterHtml;
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("width=.*?&");
var s = regex.Matches(x);
if(s.Count>0)
{
string str = s[0].Value.ToString();
string width= str.Substring(str.IndexOf('=')+1, str.Length - str.IndexOf('=') - 2);
}
}
第一句var e1 = webBrowser.Document.All["size"];中的“size”是网页源码中的一个节点名,通过Document属性得到源码
然后在通过后面的正则找到想要的信息。
但是在WPF中就行不通了,WPF中的WebBrowser虽然也有Document属性但是是Object类型的,也就是说只能看不能用。如果想用那么必须需要加入Miscrsoft.mshtml这个DLL,这个应该是windows自带的动态库,但是项目临近发布,为了防止某些机器上可能会不存在所以没敢加上,那为什么不直接加到安装包里面呢,因为看了下这个DLL有7M之大,整个安装包目前也就50M左右,为了这个小小的功能加7M得不偿失。
最后:再次更换思路,还是Winform的,一开始就去访问网页,然后在DocumentComplet中,再将Webborwser的父控件显示出来。
结论:使用webbrowser虽然在客户端中体验会好点,但还是建议直接调用浏览器显示网页,或者改用chrome,也就是cef,能避免很多坑,因为这两个webbrowser都是很古老的东西了,其调用的IE内核还是IE7的兼容模式,根本不符合主流网页的要求(IE8以上)。像淘宝等网站用webBrowser就会直接提示无法使用。可以通过修改注册表来更改webbrowser所调用的IE内核,但是这种方法繁琐而且不稳定,关键我自己试了下发现没什么用 - -。
WebBrowser修改默认白色背景的更多相关文章
- jupyter notebook修改默认路径和浏览器
1.jupyter notebook --generate-config 2.修改jupyter_notebook_config.py配置文件 3.修改默认路径: c.NotebookApp.note ...
- winfrom设置webBrowser框架默认的IE内核版本
要实现设置webBrowser框架默认的IE内核版本的功能需要三个方法 1:修改注册表信息来兼容当前程序 /// <summary> /// 修改注册表信息来兼容当前程序 /// /// ...
- wamp 修改默认apache 80端口
wamp server 环境安装包 修改默认80端口 D:\wamp\bin\apache\apache2.4.9\conf\httpd.conf 找到如下代码出修改后,重启apache即可 ## L ...
- Oracle 11g中修改默认密码过期天数和锁定次数
Oracle 11g中修改默认密码过期天数和锁定次数 密码过期的原因一般有两种可能: 一.由于Oracle中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180 ...
- MySQL修改默认字符集
今天朋友在做某个程序项目时,需要修改MySQL修改默认字符集,搞不好找我帮忙.百度了试了好几篇博文中的方法,最后终于成功了.但是感觉那些博文思路有点乱,所以自己总结下,希望可以帮到遇到同样问题的人. ...
- Ubuntu 14 修改默认打开方式
通过研究,有三种修改方式. 方式一: 修改路径:右上角“系统设置” -> 详细信息 -> 默认应用程序 但是,有个缺陷,可修改的项比较少. 方式二: 例如,修改pdf的打开方式,只要查看任 ...
- Liferay 6.2 改造系列之二十:修改默认添加用户权限及用户是否拥有个人站点的配置
1.修改默认添加用户权限为User,而非Powers User: 在/portal-master/portal-impl/src/portal.properties文件中有如下配置: # # Inpu ...
- solrcloud线上创建collection,修改默认配置
一.先看API,创建collection 1.上传配置文件到zookeeper 1) 本地内嵌zookeeper集群:java -classpath ./solr-webapp/webapp/WEB- ...
- 在Visio2010中修改默认字体的大小
由于我常需要在Visio2010中画流程图和UML图,但是Visio2010中的字体默认8px,这对眼睛是个挑战.摸索了好久终于找到在visio2010中修改字体大小的方式. 1.点一下红色箭头所指的 ...
随机推荐
- IDEA使用Maven+Tomcat插件实现热部署
1 配置tomcat pom.xml <!-- tomcat7启动插件 --> <plugin> <groupId>org.apache.tomcat.maven& ...
- poj 3682 King Arthur's Birthday Celebration (期望dp)
传送门 解题思路 第一问比较简单,设$f[i]$表示扔了$i$次正面向上的硬币的期望,那么有转移方程 : $f[i]=f[i]*(1-p)+f[i-1]*p+1$,意思就是$i$次正面向上可以 ...
- mybatis接口映射
通过sqlSession.getMapper();方法获取映射的接口及方法 sqlSession调用Configuration的getMapper方法,方法中使用了mapperRegistry.get ...
- JavaSE_12_Properties类和缓冲流
1.Properties类 java.util.Properties 继承于Hashtable ,来表示一个持久的属性集.它使用键值结构存储数据,每个键及其对应值都是一个字符串.该类也被许多Java类 ...
- 箭头函数报错:Add @babel/plugin-proposal-class-properties (https://git.io/vb4SL) to the 'plugins' section of your Babel config to enable transformation.
解决:根目录新建babel.config.js加入如下内容 module.exports = { presets: [ "@babel/preset-env", "@ba ...
- VS2010-MFC(MFC应用程序框架分析)
转自:http://www.jizhuomi.com/software/145.html 一.SDK应用程序与MFC应用程序运行过程的对比 程序运行都要有入口函数,在之前的C++教程中都是main函数 ...
- 15_K-近邻算法之入住位置预测
案例:本次大赛的目的是预测一个人想签入到哪个地方.对于本次比赛的目的,Facebook的创建一 个人造的世界,包括位于10公里的10平方公里超过10万米的地方.对于一个给定的坐标,你的任务是返回最有可 ...
- adb环境部署及与模拟器的连接
1.下载adt-bundle-windows-x64安装包,下载网址https://www.7down.com/soft/293453.html 2.对安装包进行解压缩 3.配置环境变量,将adb的路 ...
- hadoop2.x 完全分布式详细集群搭建(图文:4台机器)
在准备之前说一下本次搭建的各节点角色,进程. nameNode 进程:NameNode dataNode 进程:DataNode resourceManager :ResourceManager n ...
- java虚拟机(十一)--GC日志分析
GC相关:java虚拟机(六)--垃圾收集器和内存分配策略 java虚拟机(五)--垃圾回收机制GC 打印日志相关参数: -XX:+PrintGCDetails -XX:PrintGCTimestam ...