客户端软件,也就是传统的Winform软件,在很多时候是很好用的。因为在做一些打印、本地设备操作的时候,纯Web系统还是存在很多局限性的。例如很多驱动你需要单独写cab包啦,交互式实现调试很困难啦,浏览器适配问题啦等等。这个时候,Winform结合Web的方式,就是一种比较好的选择。
虽然.net本身支持WebBrowser,但是WebBrowser这个东西是基于本地操作系统IE浏览器的,一些CSS的样式解析啦,还有一些权限什么的,还是没有办法很好的控制。这时候我们就会想要把Chrome浏览器嵌入过来用了,目前有些网站几乎很少支持IE。
最早网上有Webkit的一些控件,但是现在已经不提供更新维护了。
截止目前为止,CefSharp是一个比较好的解决方案。CefSharp是嵌入的Chromium浏览器,基本等同chrome。
笔者这里用的是VS2019
首先是先搭建基本的开发环境。
- 新建Winform应用程序,FrameWork版本4.6
- 在解决方案管理器上,右键单击引用,选择“管理NuGet程序包”。
- 点击浏览选项卡,搜索CefSharp,在列表中选择CefSharp.WinForms,安装CefSharp包,会自动安装相关引用包。
- 打开引用列表,看到有CefSharp,CefSharp.Core,CefSharp.Winforms这三个包就OK了。
然后说一下基本的用法。先实现把ChromeWebBrowser嵌入到窗体中去并打开百度好了。
public ChromiumWebBrowser browser;
public void InitBrowser(){
Cef.Initialize(new CefSettings());
browser = new ChromiumWebBrowser (“www.baidu.com”);
this.Controls.Add(browser);
browser.Dock = DockStyle.Fill;
}
然后再窗体构造函数中,InitializeComponent()之后调用InitBrowser()方法,将browser添加到窗体中去。
这样运行就能打开百度的页面了。
具体CefSharp操作详见:
https://github.com/cefsharp/CefSharp/wiki/CefSharp中文帮助文档