利用HTML实现软件的UI

先看看下面的实例

这是应朋友之邀编写的查询职业技能鉴定考核的分数的软件。看过我之前的博文的,可知这是借用我之前的网页界面。

这个UI,如果用WinForm的控件来实现,难度很高。

于是另辟蹊径,用Webbrowser控件加载HTML网页来实现软件的UI。

这样做的好处有:

1、用HTML编写UI的难度要低得多,可以利用网上很多现成的UI库实现绚丽的UI。本例就是利用Bootstrap库实现的界面UI。

2、实现前端UI和后台逻辑的分离。前端UI(HTML)只实现界面的绘制(可以简单的对前端数据验证),不需要负责后台逻辑以及数据的验证。

缺点是:

界面实现是通过Webbrowser控件来调用系统内核的IE来实现。则界面的效果和IE的版本息息相关,高版本的IE没什么太大的差异,但是低版本的IE就会出现界面变形的情况。

这样做还要解决前端UI和后台的通信问题,即:

1、前端UI如何调用后台的方法

2、后台如何调用前端UI的方法来刷新页面

下面详细讲解一下

1、前端UI如何调用后台的方法

首先,新建一个类,专门实现后台的逻辑。为了能让前端调用,必须给类添加相应的申明,如下所示:

<System.Runtime.InteropServices.ComVisible(True)>
Public Class clsQuery
    Private _Web As WebBrowser
    Public Sub New(W As WebBrowser)
        _Web = W
        _Web.ObjectForScripting = Me
    End Sub

Public Sub Query(ID As String, Subject As String) 
      
    End Sub 
    
End Class

通过申明

<System.Runtime.InteropServices.ComVisible(True)>

使得该类的公用方法能通过Webbrowser控件被调用,就是代码中Query方法

再通过   _Web.ObjectForScripting = Me  把该类和Webbrowser控件绑定,这样前端UI就能调用该类的方法了。

在前端UI的HTML代码中,通过window.external.Query(ID, Subject); 调用后台的逻辑

<script>
        function Query() {
            var ID = $(‘#IDCard‘).val();
            var Subject = $(‘#Subject‘).val();

if (ID == ‘‘)  {
                alert(‘请输入身份证号!!!!‘);
            }
            else {
                window.external.Query(ID, Subject);
            }
        }

function CreateTable(T) {
            $(‘#ResultTable‘).html(T);
        }
    </script>

2、后台如何调用前端UI的方法来刷新页面

上面的前端UI代码中,函数CreateTable是给后台逻辑调用来刷新前端UI的

在后台代码中用下面的代码调用前端UI的函数来刷新UI。

_Web.Document.InvokeScript("CreateTable", A)

至此,前端UI和后台逻辑的双向通信已经全部打通,实现了UI和逻辑层的分离。

同时,前端UI利用众多的HTML、CSS、JS类库能实现很多绚丽的UI,不怕想不到,就怕做不到。

本文中的后台逻辑就不贴了,无外乎就是获取数据、数据分析、格式化数据而已

多说一句,这个前端UI也可以用WPF实现,只是实现的难度要大很多。毕竟网上现成的WPF的前端UI库不太好找。

时间: 2024-10-19 09:33:02

利用HTML实现软件的UI的相关文章

解决RedHat5.8无法利用yum安装软件问题

解决RedHat5.8无法利用yum安装软件问题 好久都没有用红帽系统了,今天在睿江云安装部署Sybase,在RedHat5.8的环境需要测试,用yum安装gcc结果如下: [[email protected] ~]# yum -y install gcc Loaded plugins: katello, product-id, security, subscription-manager Updating certificate-based repositories. Unable to re

如何利用标签打印软件制作商品标签?

标签是我们日常生活中随处可见的东西,购买珠宝首饰给的小票里面订的有珠宝标签,购物超市里有商品计价标签,买衣服时的吊牌标签及合格证等,商品标签各式各样,到底是怎么制作的呢?今天就来以日常所用的笔记本标签为例,来介绍一下怎么利用领跑标签打印软件制作商品标签. 如下图所示,即为我们要设计的商品标签: 首先,要测量该笔记本标签的规格大小,也就是长和宽.测量完成后在领跑标签打印软件上新建标签,在"纸张"选项中设置"自定义大小",设置纸张宽度和高度,然后在"布局&qu

软件测试学习笔记week 5 --- 利用Visual Studio 2012进行UI测试

编码的UI测试 Visual Studio 2012中的自动化UI测试功能可以很轻松地测试应用程序的UI功能,利用它可以帮助你完成编码的UI测试. 一.新建编码的UI测试项目 在visual studio 2012中,点击文件->新建->项目,在其他语言中选择C#,点击测试,选择编码的UI测试项目点击确定. 二.录制UI测试操作 新建测试项目之后,选则录制操作,出现编码的UI测试生成器: 之后进行录制: 点击“开始录制”,打开浏览器,这里打开的是http://channel9.msdn.com

利用反向代理软件ngrok访问本地项目

web 开发,有时候,需要将自己在本地开发中的网站远程展示给别人看. 之前能想到的办法,就是在自己的服务器上搭建一个测试站点,将开发代码部署上去. 今晚,发现了 ngrok 这个软件,再也不用这么麻烦了! ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道. 以windows为例: 1:软件下载地址:https://ngrok.com/download 2:在该网站注册一个自己的账号获取authtoken      接下来cmd命令进入ngrok目录:

WPF 利用BackgroundWorker 动态加载UI

BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (ee, se) => { //TODO 需要异步请求的操作 }; bw.RunWorkerCompleted += (ew, sw) => { Dispatcher.Invoke(new Action(() => { <span style="white-space:pre"> </span>//TODO 动态生成UI }))

满楼傲视防御网关之三:被攻击的时候利用抓包软件iptool抓包

首先在服务器下载iptool,这是一款免费的网络抓包软件.[曾遇到某些服务器不能使用,具体原因不明,估计是IDC封杀了] 1.设置过滤规则.打开软件,提示驱动啥的,要选择允许.点图示图标.   a.协议过滤 .勾选选择tcp协议. b.端口过滤.根据傲视被攻击的服的端口,例如前面说的第一区对外开放的端口9991. c.保存确定 2.点开始抓包,就可以抓包了. 3.等攻击到达,发现GS出现异常,一般是掉GS.游戏集体掉线等情况,进服务器关闭抓包. 4.如果不会自己分析包的,可以把包保存好. 抓包流

[转]C#利用委托跨线程更新UI数据

在使用C#的过程中,难免会用到多线程,而用多线程之后,线程如何与界面交互则是一个非常头疼的问题.其实不仅仅是界面,一般情况下,我们往往需要获得线程的一些信息来确定线程的状态.比较好的方式是用委托实现,看例子: class TestClass { //声明一个delegate(委托)类型:testDelegate,该类型可以搭载返回值为空,参数只有一个(long型)的方法. public delegate void testDelegate(long i); //声明一个testDelegate类

100款开源软件

不知道这些你就OUT了!100款开源软件 好的软件可以极大提高工作效率,完成一些不可能完成工作.然而我们也常常为选择哪款软件而头疼,本次为大家推出的100款软件都是经过整理分类的,而且最重要的是100款软件都是开源免费且使用于Linux环境下,大部分都可以直接从官网上下载使用.如果你完全没有接触过以下我介绍的这100款软件,我只能说一句你OUT了! 图:100款软件分类图 接下来将要介绍的100款开源应用程序,是我花了很多时间为大家整理的,这些软件对大家来说是很有用的.我希望通过这100款软件告

nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Windows程序员的事实). 操作系统 API.操作系统发展到今日,几乎桌面应用的所有功能,都是基于系统API构建的.调用API和语言及技术无关,哪怕是使用汇编.例如(代码来源于网络,本地重新编译): ;我的第一个win32汇编程序 ;一个经典的hello world !程序 ;>>>>&