怎样在Winform窗体中嵌入Web浏览器
背景
项目当中需要在Winform窗体中嵌入网页,虽然微软自带了WebBrowser控件,但是她是以IE模式运行的,兼容性实在太差,找了一圈发现有个叫CefSharp的家伙还不错,于是就拿来玩了一下。
CefSharp 主要特征
- 支持.NET Framework 4.5.2+
- 支持Winform,WPF
- 基于Chromium内核
- 支持Javascript互操作
- BSD商业开源,地址https://github.com/cefsharp/CefSharp
快速入门
注:笔者的环境是Visual Studio 2019.
- 新建winform项目。
- 打开Nuget包管理器。
- 搜索CefSharp.WinForms,可以看到目前最新的版本是81.x, 点击安装。
- 编译项目,会出现以下错误:
CefSharp.Common is unable to proceeed as your current Platform is ‘AnyCPU’. To target AnyCPU please read https://github.com/cefsharp/CefSharp/issues/1714. Alternatively change your Platform to x86 or x64 and the relevant files will be copied automatically. For details on changing your projects Platform see https://docs.microsoft.com/en-gb/visualstudio/ide/how-to-configure-projects-to-target-platforms?view=vs-2017
这是因为编译的时候默认使用的AnyCPU选项,官方也给出了不同的解决方案,根据其中一种做了以下修改:
- 用文本工具打开项目文件,找到第一个PropertyGroup节点,添加子节点:<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
- 修改App.Config,添加probing节点,修改后如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup><runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><probing privatePath="x86"/></assemblyBinding></runtime>
</configuration>
- 修改Program的Main函数,如下:
static void Main(){var settings = new CefSettings();settings.BrowserSubprocessPath =System.IO.Path.GetFullPath(@"x86\CefSharp.BrowserSubprocess.exe");Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}
- 最后在Form里面嵌入浏览器控件即可:
public Form1()
{InitializeComponent();ChromiumWebBrowser browser = new ChromiumWebBrowser("http://www.bigname65.com");browser.Dock = DockStyle.Fill;this.Controls.Add(browser);
}
怎样在Winform窗体中嵌入Web浏览器相关推荐
- winform窗体中嵌入显示Excel文件
最近做的一个项目是C/S结构的,由于客户需要,需要在Winform页面上直接显示Excel文件.对于个人来说,我一直都是在从事B/S结构的项目开发,对于Asp.net很熟悉.但是c/s结构项目的开发还 ...
- WinForm在窗体中嵌入窗体
WinForm在窗体中嵌入窗体WinForm在窗体中嵌入窗体WinForm在窗体中嵌入窗体 Form1.cs SubForm 代码 using System; using System.Collect ...
- 【二次开发】将CATIA嵌入到Winform窗体中
由于项目需要,我们需要将CATIA嵌入到我们的软件之中,要求在软件启动后,同时调用并启动CATIA软件,并能够屏蔽掉软件自身的菜单和按钮.通过在网上查阅资料,实现了这一功能. 调用并启动CATIA p ...
- 【小沐学C#】WPF中嵌入web网页控件(WebBrowser、WebView2、CefSharp)
文章目录 1.简介 1.1 WPF简介 1.2 WPF 体系结构 1.3 WPF入门开发 2.WebBrowser 2.1 WebBrowser特点 2.2 WebBrowser常用的属性.方法和事件 ...
- 在WinForm程序中嵌入ASP.NET[转]
在WinForm程序中嵌入ASP.NET 现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分 ...
- Qt中嵌入web网页的几种实现方式
1.背景 Web网页的界面交互相比较Qt客户端而言有着比较大的优势:更加的多样化和更高的使用便捷性使得我们即使在客户端中也可以考虑将web网页嵌入到客户端的界面当中.如此便能将web的优势和客户端进行 ...
- C++中嵌入ie浏览器总结 .
C++中嵌入ie浏览器总结(1) - ie边框 及上下文菜单 最近项目中用html 来做界面,也就折腾了一下在wxwidget中嵌入浏览器的若干细节工作,mfc也基本是类似的,由于wxwidget中已 ...
- C++中嵌入ie浏览器
转载自:http://www.360doc.com/content/13/0522/14/8236462_287267576.shtml 很不错的文章,原文保存 C++中嵌入ie浏览器总结(1) - ...
- 如何在 Windows XP 中使用 Web 浏览器连接打印机
如何在 Windows XP 中使用 Web 浏览器连接打印机 概要 本文介绍了如何使用 Web 浏览器连接到打印机. Internet 打印工作原理 有了 Microsoft Windows XP ...
最新文章
- SharedActivityContext要引用那个单元?
- cocoJS配置文件:project.json
- 开始一瓢凉水浇顶,然后慢慢的感觉良好。
- 前端学习(1660):前端系列实战课程之时间对象介绍
- python正则判断_Python 正则表达式
- 大数据之-Hadoop3.x_MapReduce_WordCount案例集群运行---大数据之hadoop3.x工作笔记0093
- [ssh] remote host key has changed
- nfc和红外线的区别_红外,蓝牙,WiFi,NFC区别及优缺点
- ServletContextListener Servlet侦听器示例
- JAVA中的枚举使用总结
- lua反射的一个例子
- 软件编程自学快速入门
- 云更新网吧系统服务器,云更新网吧无盘
- VALSE 4月12日 下午 第一会场 深度学习模型设计 会议记录
- SaltStack数据系统
- 用 Python 快速追踪基金的收益情况(2022年4月更新) | Python财经实践
- Unity3D学习之路Homework4—— 飞碟射击游戏
- 培训演讲的小技巧,你知道多少?
- 基于Python的超市零售数据分析
- Yarn公平调度器[转自 AIMP平台wiki]