博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF中使用cefsharp
阅读量:6388 次
发布时间:2019-06-23

本文共 2577 字,大约阅读时间需要 8 分钟。

原文:

新入职一家公司,由写服务端接口变成了软硬件通信、服务器、客户端、C/S、B/S乱七八糟各种打杂。首先接收一个WPF项目,因为不熟WPF,再加上前端我也不熟,我打算使用类似Webapp的方式改造一下,驱使我这样改造的原因是----我心里其实是期待着老板能看在我很忙很累的份上开开恩,招个前端妹子来。

WPF自己的webbrowser控件使用起来经常会js出错,看网上说可以修改注册表提高wpf默认使用的ie浏览器版本,最后决定使用cefsharp。

包管理器下载安装了cefsharp.wpf,没注意版本。

编译报错,提示需要.net 4.5.2以上版本,当前程序使用的是.net 4.0,编译器为vs2013。

工程右键->属性->目标框架,下拉最高只有.net 4.5.1,下载.net 4.5.2 Developer Pack安装。

准备工作结束,直接上代码

准备html

    
部门列表

xaml布局文件不需要改动,相应cs文件

在构造函数中加入

//var browser = new CefSharp.Wpf.ChromiumWebBrowser();this.Content = browser;browser.Address = @"c:/html/Department.html";//文件路径browser.RegisterJsObject("bound", new BoundObject(), new CefSharp.BindingOptions { CamelCaseJavascriptNames = false });//次函数有对应异步方法(RegisterAsyncJsObject),区别和使用场景没仔细看

在定义一个类供js调用的c#方法
 
public class BoundObject        {            public void MyMethod()            {                MessageBox.Show("success");            }
}
 

 new CefSharp.BindingOptions { CamelCaseJavascriptNames = false }参数区分大小写。 

好了,启动点击保存,弹出了了对话框。

还可以在xaml中使用

xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"             d:DesignHeight="900" d:DesignWidth="1240">    
对应cs文件中作相应更改

var browser = new CefSharp.Wpf.ChromiumWebBrowser();            mychrome = browser;            browser.Address = CGlobal.InstallPath + "html/Department.html";            browser.RegisterAsyncJsObject("bound", new BoundObject(), new CefSharp.BindingOptions { CamelCaseJavascriptNames = false }); //Standard object rego
完善:

禁用右键 方法1

cs文件中加入

 
browser.MenuHandler = new MenuHandler();
MenuHandler继承自接口IContextMenuHandler

public class MenuHandler : CefSharp.IContextMenuHandler        {            public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)            {                model.Clear();            }            public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)            {                return false;            }            public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)            {                            }            public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)            {                return false;            }        }
方法2:修改HTML文件

 
禁止鼠标选中:

 
详情参考:https://github.com/cefsharp/CefSharp/wiki

转载地址:http://rgbha.baihongyu.com/

你可能感兴趣的文章
SUSE配置网关
查看>>
java中获取字母和数字的组合
查看>>
8-3 泛型
查看>>
你是“职业”软件开发吗?——书评《浮现式设计-专业软件开发的演进本质》...
查看>>
iOS 多线程 之 GCD(大中枢派发)(二)
查看>>
开源项目 log4android 使用方式详解
查看>>
ssh命令详解
查看>>
C# 中字符串转换成日期
查看>>
垃圾短信相关用户细分方案
查看>>
MFC工程 重命名方法
查看>>
免费的Windows系统工具
查看>>
脚本:将git项目下载到本地并启动
查看>>
棋盘覆盖(一) ACM
查看>>
Linked List Cycle && Linked List Cycle II
查看>>
SeleniumTest
查看>>
ubuntu10.04 交叉编译 aria2 总结
查看>>
实验二 linux常用命令练习
查看>>
SPY
查看>>
base64加密解密c++代码
查看>>
json数据格式
查看>>