本项目是一个Winform应用编程框架和UI库。通过这个该框架,不需任何代码,通过XML配置文件,搭建任意复杂的Windows应用界面,以类似Execel公式的方式实现基本的过程控制(赋值、条件判断、循环、跳转)和功能(字符/文件处理、Windows脚本执行、逻辑运算、数学运算、数据输入输出及输入验证、数据格式转换、加密解密、表单字段验证等);动态加载“即插即用“的核心业务处理动态链接库(CBLP Dll)实现特定的业务处理功能;支持多线程、多语言。

程序启动运行示意图:

**备注:SeqExec.exe是一个用C编写的.net程序的启动程序,用于检测.net版本并安装指定的版本,然后运行主执行程序并传递参数。(代码和示例详见:https://www.github.com/liggin2019/Ligg.SeqExec)

说明:

Application(应用):一个应用,对应一个CBLP.dll。例如,如果都是基于本框架, ERP、HR、CRM各是一个应用;在本人即将开源的应用项目里,企业网盘、Windows运维自动化、电脑工具箱各是一个应用。

Function(功能):一个应用的功能界面,一个应用对应多个Function(功能);如某应用可分为管理员界面、用户界面。

View(视图):一个Function(功能)对应多个View(视图),本框架用View(视图)实现多窗体(MDI)的效果。 一个View(视图)由多个Area(域)组成,Area(域)是Form上在不同位置的一个Panel。。

PublicView(公共视图)是总是显示(不会被隐藏)的View(视图),其他View(视图)如果不是当前View(视图),会被隐藏。

Zone(区):可以看成是一个表单,一个View(视图)里面有多个Zone(区),Area是Zone(区)的容器,Zone(区)里面包含多个控件和Transaction Items。每个Zone(区)是一个独立作业单元(IEU),可以单独组成一个View(视图)独立运行,或者是以模态(Dialog)的方式弹出对话框。

Process/Procedures(过程):一个过程控制的配置文件,实现赋值、条件判断、循环、跳转等,分为Function(功能)级别和Zone(区)级别;Procedure(过程)有以下类型,见下图。

启动运行步骤:

步骤1:运行启动程序SeqExec.exe>>传参>>运行.\Clients\Form\Run.exe

步骤2:读取Application级别配置文件>>设置Culture和当前/缺省语言>>验证启动密码>>其他验证>>启动登录>>显示软件封面>>创建StartForm的实例>>初始化CBLP.dll

步骤3:读取Function级别配置文件>>确定FunctionForm样式/风格>>初始化FunctionForm

步骤4:读取PublicView配置文件>>初始化PublicView

步骤5:读取PublicView包含的各个Zone配置文件>>初始化Zones

步骤6:读取首个View配置文件>>初始化View

步骤7:读取首个View包含的各个Zone的配置文件>>初始化Zones

下面将分几个章节来介绍设计思路和分析源码:

请先在Github fork我们的项目(https://github.com/liggin2019/ligg.EasyWinApp)并下载Src、Debug和Release文件夹,  开发环境:VS 2017,.NET Framework 4.6.01586

 

Ligg.EasyWinApp-101-Ligg.EasyWinForm:Application--启动,传入参数、读取Application级别配置文件、验证密码、软件封面、启动登录、StartForm

LiggEasyWinApp-102-Ligg.EasyWinForm:Function--ControlBox、Tray、Resize、Menu

LiggEasyWinApp-103-Ligg.EasyWinForm:View

LiggEasyWinApp-104-Ligg.EasyWinForm:Procedure

LiggEasyWinApp-105-Ligg.EasyWinForm:Zone

LiggEasyWinApp-106-Ligg.EasyWinForm:Control、 StyleClass、StyleText

LiggEasyWinApp-107-Ligg.EasyWinForm:ResolveConstant, GetText、Action

LiggEasyWinApp-108-Ligg.EasyWinForm:各控件介绍

LiggEasyWinApp-109-Ligg.EasyWinForm:控件字段验证

LiggEasyWinApp-110-Ligg.EasyWinForm:支持多语言

LiggEasyWinApp-111-Ligg.EasyWinForm:支持多线程

LiggEasyWinApp-112-Ligg.EasyWinForm:如何调试和发布

LiggEasyWinApp-113-Ligg.EasyWinForm:与Windows域帐号集成实现SSO

LiggEasyWinApp-114-Ligg. EasyWinForm:“即插即用“.Net组件---核心业务逻辑处理组件(CBLP)组件

LiggEasyWinApp-115Ligg.EasyWinForm:CBLP组件与数据库接口(MySQL/MSSQL)

LiggEasyWinApp-116-Ligg.EasyWinForm:CBLP组件与服务器端接口(WCF/RESTful)

LiggEasyWinApp-117Ligg.EasyWinForm:CBLP组件与嵌入式设备接口(基于OPC标准协议)

Ligg.EasyWinApp-100-Ligg.EasyWinForm:一款Winform应用编程框架和UI库介绍的更多相关文章

  1. Ligg.EasyWinApp-000: 一款Windows应用编程框架介绍

        本框架(解决方案)是一个Windows应用编程框架和UI库,通过该框架,不需任何代码,通过XML配置文件,搭建任意复杂的Windows应用界面,以类似Execel公式的方式实现基本的过程控制( ...

  2. 介绍一款倍受欢迎的.NET 开源UI库

    概述 今天要带大家了解的是一款WPF的开源控件库MahApps.Metro.MahApps.Metro是用于创建现代WPF应用程序的工具包,它许多开箱即用的好东西. 目前支持的NET Framewor ...

  3. vue下超级滚动条perfect-scrollbar(在特定框架里使用一款并非为该框架定制的库/插件)

    点我查看

  4. GitHub上排名前100的iOS开源库介绍(来自github)

    主要对当前 GitHub 排名前 100 的项目做一个简单的简介,方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. 若有任何疑问可通过微博@李锦发联系我 项目名称 项目信息 ...

  5. GitHub上排名前100的Android开源库介绍

    GitHub上排名前100的Android开源库介绍 文章来源: http://www.open-open.com/news/view/1587067#6734290-qzone-1-31660-bf ...

  6. 浅述WinForm多线程编程与Control.Invoke的应用

    VS2008.C#3.0在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的方式在W ...

  7. WinForm多线程编程简单Demo

    需要搭建一个可以监控报告生成的CS(WinForm)工具,即CS不断Run,执行获取数据生成报告,经过研究和实践,选择了使用"WinForm多线程编程"的解决方案.当然参考了园中相 ...

  8. LiteHttp:一款‘智能’的HTTP框架类库

    LiteHttp:一款‘智能’的HTTP框架类库(转自github) 简介 LiteHttp是一款简单.智能.灵活的HTTP框架库,它在请求和响应层面做到了全自动构建和解析,主要用于Android快速 ...

  9. 推荐10款优秀的JavaScript Web UI库 框架和套件

    在进行Web开发时,并非所有的库都适合你的项目,但真正开发的时候,你任然需要依赖一款UI框架.特别在你时间紧迫的时候,它是你忠实的朋友. 他们都是些广泛使用包含不同语言实现的WEB UI框架.今天我就 ...

随机推荐

  1. 纯CSS背景噪声.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 【限时免费】从入门到实战,5节课玩转Kafka!赢音箱、书籍好礼!

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  3. 开发者如何学好 MongoDB

    作为一名研发,数据库是或多或少都会接触到的技术. MongoDB 是当前火热的 NoSQL 之一,我们怎样才能学好 MongoDB 呢?本篇文章,我们将从以下几方面讨论这个话题: MongoDB 是什 ...

  4. 接口访问报错:The valid characters are defined in RFC 7230 and RFC 3986

    写了个接口,在测试访问的时候,需要传json串,但是后台报错了 The valid characters are defined in RFC 7230 and RFC 3986 当前使用的tomca ...

  5. python笔记02

    day02笔记记录 一.今日摘要 循环.字符串格式化.运算符.编码.博客. 二.内容回顾 (一)计算机基础 计算机由硬件和软件组成.传统计算机的硬件一般有输入单元.输出单元,算数逻辑单元.控制单元及记 ...

  6. 设计模式GOF23(结构型模式:代理模式,适配模式,桥接模式,组合模式,装饰模式,外观模式,享元模式)

    结构型模式: – 分类: • 适配器模式.代理模式.桥接模式.装饰模式.组合模式.外观模式.享元模式 – 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题.   结构 ...

  7. CYPRESS最新的USB3.0控制器

    CYPRESS近日发布了其最新的USB3.0控制器,产品序号为CX3,主要是针对高像素摄像头方面的应用,接口支持MIPI的CSI-2,并不支持传统的基于并口的数据传输模式. MIPI(Mobile I ...

  8. Day 03 Python 基础

    目录 Pycharm 的使用 设置 快捷键 变量 什么是变量 定义变量 变量名的命名规则 变量名的两种命名方式 注释 快捷键(快速注释) 单行注释 多行注释 注释的作用 Turtle库的使用 Pych ...

  9. Java中final修饰的数据

    目录 Java中final修饰的数据 有初始值的final域 final+基本数据类型 final+引用数据类型 final与static final 空白final域 final修饰的参数 基本数据 ...

  10. Java集合类框架的最佳实践?

    根据应用的需要选择合适的集合对性能是非常重要的.如果一个集合的元素数量是固定的,而且我们能够提前知道固定的数量,那么就可以使用数组,而不是ArrayList. 每个集合都可以设置初始容量,如果我们提前 ...