在项目中代替DevExpress(一)
从Delphi时代开始一直都是DevExpress系列控件的忠实用户,到现在已经有10多个年头了。DevExpress里面的控件基本从头到尾都用过一次,而且也开发过很多基于DevExpress的子控件。对于像我们这样的小团队来说,使用DevExpress控件可以解决界面风格及基本美化的问题,毕竟让程序员代替美工是一件不靠谱的事情。
但是在.NET环境下,DevExpress有一个很大硬伤,就是使用了DevExpress控件的项目,其启动速度可谓惨不忍睹,而且程序运行非常耗费资源!如果客户电脑的配置没有2G以上内存的话,基本上就跑不动了。而且即使在2G内存下,程序的执行速度依然并不理想。一些实施工程师去客户现场测试过,发现如果电脑冷启动后执行程序,从双击程序到出现程序主画面,基本要20秒左右。即使是热启动,程序也基本需要5、6秒的时间。由于开始之初没有料到速度会如此慢,在项目后期再修改已经来不及了。所以这个项目基本就是因为DevExpress速度问题未能解决而失败告终。
立即着手研究第二代产品,首先要做的是在保证界面美观性的情况下,寻找可以编写出美观界面的控件。但经过一段时间的测试,检测了Telerik等大型套装控件后发现,速度问题依然不是很满意,和使用自带WinForm自带控件的程序相比,两者速度有非常明显的差别。
于是决定自行开发基于WinForm的界面控件,结果就有了SMT-WinControl了。SMT-WinControl整个类库只有200KB(DevExpress一整套界面有几十MB),并且里面已经包含了一套皮肤(基于DevExpress Style)。SMT-WinControl的各个控件都是多功能的,这样使用起来更加方便,这个在后面会对每一个控件进行详细说明。但最重要的是,新项目基于这个控件进行开发,启动速度是用毫秒来计算的。
下面是项目的一些截图,自我感觉还不错吧。
当然,这里只是展示了几个最基本的控件。但SMT-WinControl已经包含了数十个控件,可谓功能强大。在后面的章节中,我们会继续逐一介绍。
在项目中代替DevExpress(一)的更多相关文章
- 在项目中利用TX Text Control进行WORD文档的编辑显示处理
在很多文档管理的功能模块里面,我们往往需要对WORD稳定进行展示.编辑等处理,而如果使用微软word控件进行处理,需要安装WORD组件,而且接口使用也不见得简单易用,因此如果有第三方且不用安装Offi ...
- 在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件
DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一 ...
- VS项目中使用Nuget还原包后编译生产还一直报错?
Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...
- ABP项目中使用Swagger生成动态WebAPI
本文是根据角落的白板报的<使用ABP实现SwaggerUI,生成动态webapi>一文的学习总结,感谢原文作者角落的白板报. 1 安装Swashbuckle.core 1.1 选择WebA ...
- iOS 之项目中遇到的问题总结
昨天去一家公司面试,面试官问了我在项目开发中遇到过哪些问题,是什么引起的,怎样解决的? 当时由于有点小紧张只说出了一两点,现在就来好好总结一下. 问题: 1.两表联动 所谓的两表联动就是有左右两个表格 ...
- My97DatePicker时间控件在项目中的应用
一.下载My97DatePicker的压缩包My97DatePicker.rar,解压. 注:My97DatePicker最新版本有开发包,项目中使用时删掉,以便节省空间,提高程序的运行效率. 二.在 ...
- 在项目中同时使用Objective-C和Swift
苹果发布的Swift语言可以和之前的Objective-C语言同时存在于一个项目中. 可能有人会认为是同一个类文件中既可以有Objective-C也可以有Swift,这是不对的.同一个类文件或同一个代 ...
- 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持
在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
随机推荐
- 一条诡异的insert语句
问题背景 有同事反馈在mysql上面执行一条普通的insert语句,结果报错, execute failed due to >>> Incorrect string value: ' ...
- Java api 入门教程 之 JAVA的IO处理
IO是输入和输出的简称,在实际的使用时,输入和输出是有方向的.就像现实中两个人之间借钱一样,例如A借钱给B,相对于A来说是借出,而相对于B来说则是借入.所以在程序中提到输入和输出时,也需要区分清楚是相 ...
- oracle常用命令集合
一. 表空间相关命令 创建数据表空间 create SMALLFILE tablespace dataSpace datafile 'E:\oracle\product\10.2.0\oradata\ ...
- Python基础-day2
1.Python模块python 中导入模块使用import语法格式:import module_name示例1: 导入os模块system('dir')列出当前目录下的所有文件 # _*_ codi ...
- 烂泥:使KVM显示VM的IP地址及主机名
本文由秀依林枫提供友情赞助,首发于烂泥行天下. KVM虚拟化学习已经有一段时间了,现在虚拟化软件比较多,对比了下目前使用比较多的VMware Vsphere.发现在不进入VM系统的情况下,Vspher ...
- df,du,mount
df 查看当前系统中文件系统的使用情况 $df [-aTh]缺省选项查看当前系统的所有文件系统 -a列出所有的信息 -T列出文件系统类型 -hhuman-readable,用合适的单位表示大小 $df ...
- 虚拟机centos6.5 --安装jdk
1.首先卸载默认安装的openjdk,如下 rpm -qa | grep java #查看当前是否已经安装了跟java有关的包 yum -y remove java #卸载 rpm -qa |grep ...
- 从vmware下载到Linux环境下jdk和maven的安装
写在前面:个人总结,如有不对请指出 操作环境: 操作系统:window7 企业版 处理器:Intel Core i5-4200U CPU @ 1.6GHz 内存:8G 系统类型:64位操作系统 需要安 ...
- java编程思想读书笔记2
六:访问权限控制 1.java中的4种访问制权限: (1).public:最大访问控制权限,对所有的类都可见. (2).protect:同一包可见,不在同一个包的所有子类也可见. (3).defaul ...
- POJ 3384 Feng Shui --直线切平面
题意:房间是一个凸多边形,要在里面铺设两条半径为r的圆形地毯,可以重叠,现在要求分别铺设到哪,使地毯所占的地面面积最大. 解法:要使圆形地毯所占面积最大,圆形地毯一定是与边相切的,这样才能使尽量不重叠 ...