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.点一下红色箭头所指的 ...
随机推荐
- Ansible-playbook简单应用的几个实例
①ansible-playbook的循环: 重复执行某任务:对迭代项的引用,固定变量名为“item”,而后要在task中使用with_items给定要迭代的元素列表,列表方法:字符串/字典(类似jso ...
- index方法用于数据集的强制索引操作
index方法为3.2.3版本新增,用于数据集的强制索引操作,例如: $Model->index('user')->select(); 对查询强制使用user索引,user必须是数据表实际 ...
- LUOGU P3355 骑士共存问题(二分图最大独立集)
传送门 因为骑士只能走"日"字,所以一定是从一个奇点到偶点或偶点到奇点,那么这就是一张二分图,题目要求的其实就是二分图的最大独立集.最大独立集=n-最大匹配. #include&l ...
- 使用Ajax在HTML页面中局部刷新页面(左边菜单右边页面)
转载自:https://blog.csdn.net/Cenmen_17714/article/details/80969008 index.html <a href="javascri ...
- c++ STL使用
STL标准模板库,提供一些类似java集合类的数据结构容器.比如eque.list.vector.map 等.还提供一些支持这些容器的算法和遍历容器的迭代器. 使用方法 #include <io ...
- GC 案例收集整理
1.数组动态扩容 现象:系统一直在做cms gc,但是老生代一直不降下去,但是执行一次jmap -histo:live之后,也就是主动触发一次full gc之后,通过jstat -gcutil来看老 ...
- Django之模板语言(一)
1.Django的模板语言(简而言之,字符串替换) 1.目前为止已经学过的模板语言: 1.{{ name }} ------>变量 2. for 循环: {% for i in book_li ...
- springboot 2+ druid
springboot 1+ druid druid 配置 import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid ...
- [POI2017]Sabota【观察+树形Dp】
Online Judge:Bzoj4726 Label:观察,树形Dp,水题 题目描述 某个公司有n个人, 上下级关系构成了一个有根树.公司中出了个叛徒(这个人不知道是谁). 对于一个人, 如果他下属 ...
- windows API 第 11 篇 GetCurrentDirectory SetCurrentDirectory
GetCurrentDirectory函数获得当前文件所在的目录,并不是进程的目录(debug 和 release),它和GetCommandLine不同这里只讲 GetCurrentDirector ...