相关文章推荐
威武的蘑菇  ·  国家安全生产监督管理总局令(第61号)烟花爆 ...·  2 月前    · 
含蓄的炒饭  ·  价格公告-客户服务-百年人寿保险股份有限公司 ...·  1 年前    · 
调皮的石榴  ·  2025年新疆春节团拜会在乌鲁木齐举行 - ...·  1 年前    · 
威武的香瓜  ·  Chatgpt报错:The site ...·  2 年前    · 
谈吐大方的仙人球  ·  统计df指定列满足条件的数据行数 - CSDN文库·  2 年前    · 
Code  ›  C#开发BIMFACE系列53 WinForm程序中使用CefSharp加载模型图纸1 简单应用开发者社区
winform c# cefsharp
https://cloud.tencent.com/developer/article/1892082
暴走的电池
1 年前
张传宁IT讲堂

C#开发BIMFACE系列53 WinForm程序中使用CefSharp加载模型图纸1 简单应用

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
张传宁IT讲堂
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > C#开发BIMFACE系列53 WinForm程序中使用CefSharp加载模型图纸1 简单应用

C#开发BIMFACE系列53 WinForm程序中使用CefSharp加载模型图纸1 简单应用

作者头像
张传宁IT讲堂
发布 于 2021-10-21 15:02:24
2.4K 0
发布 于 2021-10-21 15:02:24
举报
文章被收录于专栏: .NET企业级解决方案应用与咨询

在我的博客 《C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案》 中介绍了多种集成BIMFACE到客户端程序中的方案。最后推荐大家使用 CefSharp组件与WebView2组件。本篇文章介绍使用CefSharp组件如何集成BIMFACE到客户端程序中。

一、CefSharp 简介

CefSharp是一个围绕Chromium Embedded Framework(CEF)的轻量级.NET包装器。它是用C++/CLI编写的。允许开发者在.NET应用程序中嵌入Chromium。可以在C#或VB或任何其他CLR语言中使用。CefSharp同时提供WPF和WinForms Web浏览器控件实现。

功能特点

  • 免费、开源 : https://github.com/cefsharp/CefSharp
  • 完善的文档
  • 支持JS、C#、WinForm窗体之间相互通讯与调用
  • 兼容性较好,支持H5、CSS5、WebGL等
  • 支持获取Cookies较全面
  • 其他

二、CefSharp 下载

步骤1 新建WinForm项目

新建一个WinForm窗体应用程序,目标框架选择 .NET Framework 4.5.2,因为新版本的CefSahrp组件最低支持 .NET Framework 4.5.2。

步骤2 通过 NeGet 下载

打开NeGet

(1)搜索 CefSharp

(2)选择 CefSharp.WinForms

(3)选择最新版本

(4)点击【安装】按钮

点击【确定】开始安装。

安装完成后,项目中自动添加了CefSharp.dll、CefSharp.Core.dll、CefSharp.WinForms.dll 类库引用。

工具箱中也增加了CefSharp控件

步骤3 编译项目

编译 BIMFace.SDK.CSharp.Sample.WinForm 项目,生成如下内容

与 CefSharp 相关的共计32个文件,2个目录,文件大小总计216M。这个尺寸相对于业务系统本身来说已经非常大了,最后制作的安装包尺寸也会很大。

其中 locales 目录下是语言包,删除 zh-CN.pak 之外的所有文件,总文件大小可以减少22M左右。

三、CefSharp 集成开发

测试功能设计如下

功能说明

(1)WinForm中加载的网页来自于 BIMFace.SDK\BIMFace.SDK.CSharp.Sample\Pages\BIMFaceDemo7_3.html,所以Web项目要首先运行。

(2)WinForm 窗体中输入 BIMFACE FileId,点击【加载模型/图纸】按钮,调用CefSahrp组件,加载步骤(1)中的网页。代码如下:

代码语言: javascript
复制
 1 // 加载模型/图纸
 2 private void btnLaodBIMFaceFile_Click(object sender, EventArgs e)
 4     string fileId = txtBIMFaceFileId.Text.Trim();
 5     if (string.IsNullOrEmpty(fileId))
 6     {
 7         MessageBox.Show("请填写 BIMFACE FileId。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 8         return;
 9     }
10     // 将 ChromiumWebBrowserBindObject 实例对象注入到 js 对象中。网页中即可调用 ChromiumWebBrowserBindObject 类中定义的属性、方法
11     var objToBind = new ChromiumWebBrowserBindObject();
12     chromiumWebBrowser1.JavascriptObjectRepository.Register("_chromeBrowser", objToBind, true, BindingOptions.DefaultBinder);
14     string url = "https://localhost:44389/Pages/BIMFaceDemo7_3.html?fileId=" + fileId;
15     chromiumWebBrowser1.Load(url);
16 }

(3)网页中点击【JS 调用 C# 方法】按钮。代码如下:

在入口函数中,获取注入的 ChromiumWebBrowser 对象,名称为 _chromeBrowser。

按钮对应的js方法

代码语言: javascript
复制
1 // js 调用 C# 方法
2 function callCharpMethod() {
3     // 特别提醒:C# 类中定义的方法名称采用 Pascal 命名。网页中调用的时候必须将方法名称的第一个字母改为小写。否则调用不成功。
4     _chromeBrowser.testCalcAdd(6,8)
5         .then(function (response) {
6             alert(response);
7         });
8 }

特别提醒:C# 类中定义的方法名称采用 Pascal 命名。网页中调用的时候必须将方法名称的第一个字母改为小写。否则调用不成功。

调用的C#方法。定义一个单独的类,用于在CefSahrp组件加载网页之前,将其注入到网页中

(4)WinForm窗体中点击【 C# 调用 JS 方法】按钮。代码如下:

代码语言: javascript
复制
 1 // C# 调用 JS 方法
 2 private void btnCsharpCallJsMethod_Click(object sender, EventArgs e)
 4     Task<JavascriptResponse> jsResponse = chromiumWebBrowser1.EvaluateScriptAsync("jsMethodForCSharpTestCalcSub", 25, 7);
 6     if (jsResponse.Result != null && jsResponse.Result.Success == false)
 7     {
 8         MessageBox.Show("C#调用JS方法发生异常。" + jsResponse.Result.Message
 9             , "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
10     }
11 }

网页中定义的 jsMethodForCSharpTestCalcSub() 方法如下:

代码语言: javascript
复制
1 // js 方法,供C#调用
2 function jsMethodForCSharpTestCalcSub(num1, num2) {
3     /*如果参数需要是复杂类型,则传递Json格式的字符串,然后反序列化为对象即可使用*/
5     alert('传入的参数num1:' + num1 + ", num2:" + num2 + '  减法运算 num1 - num2 = ' + (num1 - num2));
 
推荐文章
威武的蘑菇  ·  国家安全生产监督管理总局令(第61号)烟花爆竹企业保障生产安全十条规定(已废止)--中华人民共和国应急管理部
2 月前
含蓄的炒饭  ·  价格公告-客户服务-百年人寿保险股份有限公司-创新百年 关爱永恒
1 年前
调皮的石榴  ·  2025年新疆春节团拜会在乌鲁木齐举行 - 政务动态 - 喀什地区行政公署
1 年前
威武的香瓜  ·  Chatgpt报错:The site owner may have set restrictions_the site owner may have set restrictions that pre
2 年前
谈吐大方的仙人球  ·  统计df指定列满足条件的数据行数 - CSDN文库
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号