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.点一下红色箭头所指的 ...
随机推荐
- 【JZOJ3318】Brunhilda的生日
description 除去对铁质盔甲强烈的热爱,Brunhilda是一个正常的7岁女孩.近期,她正在策划一个完美的生日派对.她发明了如下的一个游戏:所有的孩子在一个数k被宣读之前不停地跑来跑去.当这 ...
- Ionic3 demo TallyBook 实例3
1.准备应用相关组件 echarts--直接 npm install 安装即可 2.home.ts import { Component,ViewChild,ElementRef } from '@a ...
- 第一个duilib程序 - 实现HelloWorld详解
duilib是一个windows下的皮肤库,用win32写的... 先看个效果图吧: 要使用duilib库,必须先把库导入,代码如下: View Row Code 1 #include "x ...
- maven 工程搭建
使用Maven建立一个Quite start 项目 2.命名卫 bhz-parent 3.groupid 为: bhz 4.artifactId 为: bhz-parent package:为空不填 ...
- Java-MyBatis-MyBatis3-XML映射文件:自动映射
ylbtech-Java-MyBatis-MyBatis3-XML映射文件:自动映射 1.返回顶部 1. 自动映射 正如你在前面一节看到的,在简单的场景下,MyBatis 可以为你自动映射查询结果.但 ...
- jeecms v9 vue-CLI开发环境配置
vue-CLI开发环境配置 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程.只需几分钟即可创建并启动一个带热重载.保存时静 ...
- 洛谷P1081——开车旅行
传送门:QAQQAQ 题意注意点: 1.是从前往后走,不能回头 2.小A小B轮流开,先小A开,而小A是到第二近的点(这点调试的时候查了好久) 3.若绝对值差相同海拔低的更近,而第一个询问若比值相同是海 ...
- STL 最大堆与最小堆
在第一场CCCC选拔赛上,有一关于系统调度的水题.利用优先队列很容易AC. // 由于比赛时花费了不少时间研究如何定义priority_queue的比较函数,决心把STL熟练掌握... Queue 首 ...
- 《DSP using MATLAB》Problem 8.1
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- C++【vector】用法和例子
/*** * vector 基础api复习 * 8 AUG 2018 */ #include <iostream> #include <vector> using namesp ...