利用HTML實現軟體的UI

2021-09-22 08:49:29 字數 1786 閱讀 9105

先看看下面的例項

這是應朋友之邀編寫的查詢職業技能鑑定考核的分數的軟體。看過我之前的博文的,可知這是借用我之前的網頁介面。

這個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如何呼叫後台的方法

首先,新建乙個類,專門實現後台的邏輯。為了能讓前端呼叫,必須給類新增相應的申明,如下所示:

comvisible(

true)> 

public

class

clsquery

private _web 

aswebbrowser

public

subnew(w 

aswebbrowser) 

_web = w 

_web.objectforscripting = 

meendsub

public

sub query(id 

asstring, subject 

asstring)  

endsubend

class

通過申明

comvisible(true)>

使得該類的公用方法能通過webbrowser控制項被呼叫,就是**中query方法

再通過   _web.objectforscripting = me  把該類和webbrowser控制項繫結,這樣前端ui就能呼叫該類的方法了。

在前端ui的html**中,通過window.external.query(id, subject); 呼叫後台的邏輯

<

script

>

function query()  

else  

} function createtable(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庫不太好找。

Html實現簡單彈窗展示UI效果

在今天的專案中,實現了乙個很 神 的需求。要在unity打出的webgl中做乙個c 編輯器的功能,要求像vs那樣可以呼叫控制台除錯 我思來想去,感覺這個功能也只能模擬了,怎麼可能能實現這樣的功能。於是我在網上查詢資料,發現網上有很多線上c 除錯 於是我想可不可以用unity打出的html上展示這些c...

利用QtQuick實現UI的乙個Demo

利用qtquick實現ui的乙個demo demo主頁面 二級頁面分類電影集合,可滑動動態載入 第 介面,具體的電影資訊 2,介面的設計。這個demo介面設計很簡單,分為 介面,第一級介面是主頁,顯示電影型別。使用者選擇某乙個分類,進入第二級介面,攤開顯示該分類下的電影集合,當然這些電影相關資訊是已...

用HTML做軟體UI用到的的一些技術

做web開發的想把網頁做成應用程式的介面,開發應用程式的又想把程式介面做得和web一樣。本文介紹一下用html做軟體ui用到的的一些技術。其實html ui也不是什麼新鮮事了,norton antivirus從幾年前的版本就開始用了,vs.net2002中的開始頁也用了這個技術。from 方案一,適...