背景:在使用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修改默认白色背景的更多相关文章

  1. jupyter notebook修改默认路径和浏览器

    1.jupyter notebook --generate-config 2.修改jupyter_notebook_config.py配置文件 3.修改默认路径: c.NotebookApp.note ...

  2. winfrom设置webBrowser框架默认的IE内核版本

    要实现设置webBrowser框架默认的IE内核版本的功能需要三个方法 1:修改注册表信息来兼容当前程序 /// <summary> /// 修改注册表信息来兼容当前程序 /// /// ...

  3. wamp 修改默认apache 80端口

    wamp server 环境安装包 修改默认80端口 D:\wamp\bin\apache\apache2.4.9\conf\httpd.conf 找到如下代码出修改后,重启apache即可 ## L ...

  4. Oracle 11g中修改默认密码过期天数和锁定次数

    Oracle 11g中修改默认密码过期天数和锁定次数 密码过期的原因一般有两种可能: 一.由于Oracle中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180 ...

  5. MySQL修改默认字符集

    今天朋友在做某个程序项目时,需要修改MySQL修改默认字符集,搞不好找我帮忙.百度了试了好几篇博文中的方法,最后终于成功了.但是感觉那些博文思路有点乱,所以自己总结下,希望可以帮到遇到同样问题的人. ...

  6. Ubuntu 14 修改默认打开方式

    通过研究,有三种修改方式. 方式一: 修改路径:右上角“系统设置” -> 详细信息 -> 默认应用程序 但是,有个缺陷,可修改的项比较少. 方式二: 例如,修改pdf的打开方式,只要查看任 ...

  7. Liferay 6.2 改造系列之二十:修改默认添加用户权限及用户是否拥有个人站点的配置

    1.修改默认添加用户权限为User,而非Powers User: 在/portal-master/portal-impl/src/portal.properties文件中有如下配置: # # Inpu ...

  8. solrcloud线上创建collection,修改默认配置

    一.先看API,创建collection 1.上传配置文件到zookeeper 1) 本地内嵌zookeeper集群:java -classpath ./solr-webapp/webapp/WEB- ...

  9. 在Visio2010中修改默认字体的大小

    由于我常需要在Visio2010中画流程图和UML图,但是Visio2010中的字体默认8px,这对眼睛是个挑战.摸索了好久终于找到在visio2010中修改字体大小的方式. 1.点一下红色箭头所指的 ...

随机推荐

  1. lync sdk 二次开发

    1.关于 UI Suppression Mode http://blog.thoughtstuff.co.uk/2014/08/the-6-things-you-need-to-know-about- ...

  2. C++ 标准文件的写入读出(ifstream,ofstream)

    ttp://blog.csdn.net/a125930123/article/details/53542261     注: "<<", 插入器,向流输入数据     ...

  3. DataV教你如何给可视化应用一键美颜

    视频观看地址:https://yunqivedio.alicdn.com/user-upload/T4WEb4C5Fc.mp4 如果你平时经常接触数据统计.数据展示和决策分析,相信你对DataV一定有 ...

  4. vue-resourse简单使用方法

    一.安装引用 安装: npm install vue-resource --save-dev 引用: /*引入Vue框架*/ import Vue from 'vue' /*引入资源请求插件*/ im ...

  5. CPU的load和使用率傻傻分不清(转)

    转自: https://www.cnblogs.com/yunxizhujing/p/9382396.html 1. 什么是Cpu的Load 使用uptime.top或者查看/proc/loadavg ...

  6. 深入浅出 Java Concurrency (30): 线程池 part 3 Executor 生命周期[转]

    我们知道线程是有多种执行状态的,同样管理线程的线程池也有多种状态.JVM会在所有线程(非后台daemon线程)全部终止后才退出,为了节省资源和有效释放资源关闭一个线程池就显得很重要.有时候无法正确的关 ...

  7. python3快速安装

    linux环境快速安装python3   之前在linux上安装python3的时候,为了让不影响linux环境原有的python2的环境,选择的方法都是下载对应的linux环境的python包,不过 ...

  8. JS里面function和Function的区别

    js里Function 与 function的不一样的,不仅仅是大小写的问题. 简单点说:大写的Function是一个类 ,而小写的function是一个对象. Function是一个构造器,func ...

  9. iOS之CATiledLayer的属性简介和使用

    1.CATiledLayer简介 CATiledLayer用于大型图片进行分割显示,需要显示的图片才会加载,直接上代码: - (void)viewDidLoad { [super viewDidLoa ...

  10. <每日一题>题目26:选择排序(冒泡排序改进版)

    ''' 选择排序:选择最小的,以此类推 ''' import random import cProfile def select_Sort(nums): for i in range(len(nums ...