用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上
本文为鸡毛巾原创,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,转载请注明
CefSharp说白了就是Chromium浏览器的嵌入式核心,我们用此开发Winform程序也就相当于在程序里面内嵌了一个谷歌浏览器。所以H5/CSS3以及各种Web开发界面设计的优势就可以完全发挥出来。
由于CefSharp更新及时,所以使用此浏览器控件可能是对于Html5/CSS3支持最优秀的方案了。
1.首先我用的是VS2015,这里新建一个空白解决方案。

2.空白解决方案创建完成,如下图所示

3.在空白解决方案里新建一个Windows窗体应用程序项目,这里我的项目名称为WinAPP

4.然后在解决方案里新建一个ASP.Net Web应用程序项目,此项目主要用来进行页面设计,我命名为WebRes

5.选择模板为Empty,因为仅仅是编写最基本的Html页面和Js交互代码,不需要服务端程序。

6.这是我的解决方案结构,如下所示,有两个项目,WinAPP,和WebRes

7.右键WinAPP项目,管理Nuget程序包

8.输入CefSharp,从网络安装CefSharp.WinForms包

9.安装完成之后,点击WinAPP项目的引用,右键添加引用菜单,点击浏览。

10.进入解决方案目录,进入packages目录。

11.在下图所示的目录里面选中如下图所示的三个dll,添加到项目引用之中。

12.在下图所示的目录里面选中如下图所示的一个dll,添加到项目引用之中。

13.添加完成之后,会看到dll上面有黄色感叹号。

14.在工具栏上点击如下图的配置管理器。

15.选中WinAPP项目的上下文平台,点击新建。

16.这里我的目标平台是X64,所以新建X64平台,点击确定。

17.可以看到黄色感叹号消失了。

18.回到Winform项目之中,双击窗体,编写窗体事件代码。

19.添加如下using

20.添加如下代码,完成浏览器控件的创建与添加。

21.运行项目,如果没问题的话,应该可以正确地访问百度。

22.回到最开始创建的空的ASP.Net Web项目,创建一个Page文件夹。

23.在Page文件夹下新建一个名为Index.html的入口html页面。

24.再新建一个Jmp.html页面

25.把上一步之中新建的Jmp.html页面拖动到Winform项目之中。

26.把之前ASP.Net Web项目之中的Jmp.html删除,并且把Winform项目之中新拖动过来的Jmp.html设置成为“如果较新则复制”。

27.在Winform项目里的Jmp.html里面写上如下跳转代码,确保可以跳转到ASP.Net Web项目之中的入口页面。

28.在ASP.Net Web项目之中的入口页面上写下一句话以方便查看是否跳转成功。

29.在Winform项目的窗体事件代码里做如下修改,浏览器控件首先载入目录下的Jmp.html文件。

30.调试,可以看到,Winform程序已经载入了我们的入口页面。

31.在Winform项目里面新建一个类,这里我命名为AsyncTest,意为异步测试类,也就是JavaScript异步调用C#的异步测试类。

32.在异步测试类里加入如下两个using,以及如下代码,这里添加了一个公用的DoSomething方法,参数是两个JavaScript回调函数接口,此方法随机调用成功Success或者失败Error回调函数。

33.然后在窗体代码里新建此对象的实例,并且以异步的方式注册此实例。

34.然后在ASP.Net Web项目的入口页面里如此调用此异步对象的异步方法,也就是传入两个回调函数。注意这里的doSomething是必须采用的驼峰写法,这是之前注册的时候默认参数设置的,也可以禁止,具体可以自己研究。

35.运行,异步调用成功,哈哈,到这里就结束了。


上篇教程就到这里,下面主要是侧重于一些工程的布置结构,以及一个实例。
这是本篇教程源代码:http://pan.baidu.com/s/1dE7daF3
本文为鸡毛巾原创,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,转载请注明
用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上的更多相关文章
- 在Android平台下搭建PhoneGap开发环境--用HTML5开发游戏
一.在Android平台下搭建PhoneGap开发环境具体怎么搭建我这里就不详细说了,如有需要我后面再讲 . PhoneGap 官方地址有详细说明:http://www.phonegap.com. 在 ...
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
cocos2d-x 3.0发布有一段时间了,作为一个初学者,我一直觉得cocos2d-x很坑.每个比较大的版本变动,都会有不一样的项目创建方式,每次的跨度都挺大…… 但是凭心而论,3.0RC版本开始 ...
- 循序渐进做项目系列(2):最简单的C/S程序——消息异步调用与消息同步调用
上篇博客 循序渐进做项目系列(1):最简单的C/S程序——让服务器来做加法 实现了一个最简单的C/S程序,即让服务器来做加法.当时为了通俗易懂采用了消息异步调用的方式.今天我们要采用消息同步调用的方式 ...
- 【HTML基础习题】HTML5+CSS3做问卷星登录页面
源代码下载地址:https://download.csdn.net/download/weixin_44893902/12839539 码云仓库地址: https://gitee.com/ynavc/ ...
- Linux——搭建PHP开发环境第三步:mysql
原文链接:http://www.jb51.net/article/83647.htm 1.第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了m ...
- Linux——搭建PHP开发环境第四步:composer
原文链接:https://my.oschina.net/jiangbianwanghai/blog/473249 1.下载composer.phar [root#localhost opt]# cur ...
- Linux——搭建PHP开发环境第一步:apache
原文链接:http://www.2cto.com/os/201511/450258.html ##### Apache 编译安装[root@localhost ~]# yum install gcc ...
- 【转】一步一步教你在Ubuntu12.04搭建gstreamer开发环境
原文网址:http://blog.csdn.net/xsl1990/article/details/8333062 闲得蛋疼 无聊寂寞冷 随便写写弄弄 看到网上蛮多搭建gstreamer开 ...
- Java学习笔记一:三步搭建Java开发环境
Java开发环境搭建 一:安装JDK: 1.下载地址:http://www.oracle.com/technetwork/java/javase/downloads 非常显眼的下载界面 2.点击下载后 ...
随机推荐
- Ehcache 的简单实用 及配置
Ehcache 与 spring 整合后的用法,下面是一个Ehcache.xml配置文件: 通用的缓存策略 可以用一个 cache: <?xml version="1.0" ...
- 【挖洞经验】如何在一条UPDATE查询中实现SQL注入
直奔主题 跟往常一样,在喝完我最爱的果汁饮料之后,我会习惯性地登录我的Synack账号,然后选择一个应用来进行渗透测试,此时我的“黑客之夜”便正式开始了. 我与很多其他的安全研究人员的习惯一样,我会在 ...
- Java学习笔记——山西煤老板蛋疼的拉车问题
小荷才露尖尖角,早有蜻蜓立上头 --小池 这个问题是这样描述的: 山西煤老板有3000吨煤,要运到1000km公里外的地方卖.他选择使用火车来运煤,每辆火车行驶一公里将消耗一吨煤,且火车载货上限为10 ...
- j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 分布式架构
介绍 <modules> <!-- jeesz 工具jar --> <module>jeesz-utils</module> ...
- Docker4Windows -- 从外部(非本机host)访问 由docker container运行的程序
背景 当我们在windows 上面运行docker container的时候,我们需要借助于模拟器(例如,Virtual box/Hyper V),她的目的主要是在我们的windows系统上面模拟出一 ...
- 安卓TextView限定行数最大值,点击按钮显示所有内容
问题展示 如上图所示,在普通的TextView中,要求: 最多显示3行 超过三行显示展开按钮 且点击展开按钮显示完整内容 这个需求看似简单,但解决起来会遇到两个较为棘手的问题:1,如何判断是否填满了前 ...
- Natas Wargame Level 2 Writeup 与目录泄露(强制访问)
- 对JVM运行时常量池的一些理解
1.JVM运行时常量池在内存的方法区中(在jdk8中,移除了方法区) 2.JVM运行时常量池中的内容主要是从各个类型的class文件的常量池中获取,对于字符串常量,可以调用intern方法人为添加,而 ...
- KeepAlive随笔
参数说明 : 1 . SocketTimeout // 响应超时时间,超过此时间不再读取响应 2 . ConnectTimeout // 链接建立的超时时间 3 ...
- Promise (2) 基本方法
"I'm Captain Jack Sparrow" 加勒比海盗5上映,为了表示对杰克船长的喜爱,昨天闪现了几次模仿船长的走路姿势(哈哈哈,简直妖娆). 为了周天能去看电影,要赶紧 ...