# 如何开发winform系统

作者: 李小龙 时间: 2021-01-05

# 一、DevExpress

​ Dev(DevExpress)是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件。基于微软的Winform集成定制而来的,但是功能更加强大,使用起来也比较简单,使用DevExpress控件,可以获得更高效的界面设计以及更美观的效果。

​ Dev官方连接文档:https://documentation.devexpress.com/WindowsForms/7874/WinForms-Controls

​ Dev winform中文文档:https://www.dxper.net/documents/

​ Dev开发者论坛:https://www.dxper.net/forum-45-1.html

主要使用控件:

​ XtraGrid:一个类似GridView的控件,不过功能比GridView强很多。目前系统对它进行了一个二次封装,使之实现自定义分页、导出等功能。

​ XtraEditors:里面有很多编辑的控件如TextEdit、LookUpEdit、ButtonEdit等,用微软自带的也可以,不过为了统一风格,还是使用dev的控件。

​ XtraBars:使用该控件制作的主窗体支持换肤功能,Ribbon窗体类似Office2010的界面设计,使得用户使用更容易上手。

​ 其他:还有LayOut、TreeList、Wizard等一系列控件,使用非常方便。

# 二、arcgis相关控件

img

​ 在ae中,ToolbarControl 、TOCControl 和MapControl 称为框架控件。所谓框架控件,就是该控件起到构建GIS 应用程序框架的作用。其中ToolbarControl 和TOCControl这两个控件需要指定一个实现了IActiveView接口类的“伙伴控件”协同工作,例如MapControl控件。

实施步骤:

1、新建 Windows 窗体应用程序。

2、将ToolbarControl、TOCControl、MapControl、LicenseControl控件拖入窗体。

3、将ToolbarControl、TOCControl的伙伴控件设置成刚放入的MapControl。

4、在ToolbarControl中放入工具。

5、在程序窗口初始化之前,加入:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

ToolbarControl:存放工具的控件,工具比如:放大地图、缩小地图等。

TOCControl:对图层数据进行相关管理、操作的控件。

MapControl:通俗的说就是展示数据的窗口。

LicenseControl:授权控件,每个ae程序都必须放入一个。

# 三、创建winform项目

3.1 环境

​ 1)DevExpress

​ 2)Arcgis10.1或arcengine10.1

​ 3)vs2017

3.2 新建项目

​ 1)新建空白解决方案

img

​ 2)创建主窗体应用程序

​ 3)搭建搭建数据库实体层 Model(类库)

4)搭建数据访问层 DAL(类库)

5)搭建业务逻辑层 BLL(类库)

6)搭建表示层 UI(创建一个 Windows 应用程序)

7)搭建公共工具类库 Tool(类库)

8)添加各层之间的相互依赖

9)实现各层的功能

img

# 四、Dist CS产品开发(基础版为例)

4.1 项目结构

img

​ 1)Bussiness:产品初始化数据库访问类,现在的基础版几乎没用到。

img

​ 2)Core:包括普通工具类、AE工具类、数据库访问、全局成员属性、自定义接口类等。

img

3)DataCheck:数据质检模块,基础版目前不包含数据质检模块,单独分出来了。

img

4)Lib:进程处理模块,基础版里面有些功能采用了单独开进程处理方式。

img

5)MultiplePlanning:多规差异分析模块

img

​ 6)Operator:功能操作模块,基础版中绝大部分功能按钮的实现。

img

​ 7)Register:功能注册模块。

img

​ 8)StartUp:产品入口模块,包括基础版、数据质检、质检构建端。

img

4.2 注册/注销功能

​ 通过注册端可以注册/注销功能,在版本目录下的MRN.DCP.RegisterUI.exe应用程序,实则修改的是版本目录下的Register.rfx文件配置。

img img

​ 1)注销某功能

​ 在如下界面中选中某条记录点击注销即可。

img

​ 2)注册功能

​ 如下图所示,选择一个dll,然后选择要注册的功能注册,然后通过上移下移设置顺序。

img

4.3 开发新功能

​ 1)在功能操作模块新建类库项目

img

​ 2)添加如下层级,Class下放置普通类;Command下放置功能按钮实现类;Frm下放置窗体类、UCControl放置控件类。

img

​ 3)在Class下添加XCmdEnumerator类,并继承XOperatorEnumerator类,添加构造函数和InitOperatorDesc方法。

img

​ 其中两个红框分别表示一张图功能模块下空间统计中的规划分区统计功能和用途分类统计功能;XOperatorDesc类构造函数参数分别为:guid唯一标识、图标索引号、名字、标题、分类、环境类型、操作类型、对象。

​ 4)在Command下添加与上面“对象”参数对应的类并继承BaseDgpCommand,重写父类方法,然后实现所需要的功能。

​ 5)最中编译后进行功能注册即完成了新功能的开发。

img