从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已经包含了数十个控件,可谓功能强大。在后面的章节中,我们会继续逐一介绍。

转载于:https://www.cnblogs.com/overblue/p/3354869.html

在项目中代替DevExpress(一)相关推荐

  1. dev treeview控件_在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件

    DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一 ...

  2. 在ASP.NET项目中使用XPO的最佳准则

    学习XPO有一段时间了,也用它陆续做过几个项目.遇到过问题走过弯路,这里把DevExpress知识库的几篇文章的内容做了摘录和整理,并且加上了一些自己的注释,方便自己日后备忘也方便其他的朋友. 1. ...

  3. canvas java 上传截图_在Vue项目中使用html2canvas生成页面截图并上传

    使用方法 项目中引入 npm install html2canvas html代码 //html代码 js代码 // 引入html2canvas import html2canvas from 'ht ...

  4. android studio 自动提示jni代码,如何将JNI(C/C++本机代码)添加到现有的Android Studio项目中...

    从现有项目中执行以下步骤: 1.修改build.gradle(模块应用程序)看起来像这样(很多变化!): apply plugin: 'com.android.model.application' m ...

  5. android使用webview上传文件,Android项目中如何在webview页面中上传文件

    Android项目中如何在webview页面中上传文件 发布时间:2020-11-26 15:56:27 来源:亿速云 阅读:68 作者:Leah 本篇文章为大家展示了Android项目中如何在web ...

  6. java fragment_Java Web Fragment在项目中使用方法详解

    Web Fragment 是什么 - 它是在 servlet 3.0开始支持的,可以把一个dy web项目拆分为多个项目,解耦合,使其在项目中开发效率提高,下面我演示简单的项目创建过程 用eclips ...

  7. JAVA Web项目中所出现错误及解决方式合集(不断更新中)

    JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...

  8. Android Studio 在项目中引用第三方jar包

    在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets {main {j ...

  9. Database项目中关于Procedure sp_refreshsqlmodule_internal的错误

    最近项目中发现一怪问题,使用DB项目发布数据库时,总提示 "(110,1): SQL72014: .Net SqlClient Data Provider: Msg 1222, Level ...

最新文章

  1. 控制~Control System 线性系统
  2. 如何写出一个confirm组件
  3. CMakeLists.txt的运行方法
  4. android如何获取listview中的任意行数据
  5. [算法 笔记]堆排序(续)
  6. 009Linux密码故障排除
  7. 关于 TypeScript 内 constructor signature 的一些失败尝试
  8. 在ASP.NET Core 2.0中使用MemoryCache
  9. 计算机显卡960,2015显卡开年之作!NVIDIA GTX960首测
  10. 关于本学期西南交通大学ACM-ICPC校集训队 训练计划(Beta 1.0)
  11. 关于不过洋节的通知_南阳市第十二小学关于禁止过洋节及规范节日文化的通知...
  12. 基于matlab的负反馈仿真,MATLAB的单闭环转速负反馈直流调速系统仿真
  13. word怎么转pdf,word批量转pdf方法
  14. 计算广告中的名词解释
  15. 安卓bochs模拟linux_bochs下载-bochs模拟器 安卓版v2.5.1-PC6安卓网
  16. linux各种命令手册
  17. id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程
  18. mysql同步数据_实现MySQL数据库数据的同步方法介绍
  19. 基金从业资格考试(科目二):证券投资基金(第二版)上册 学习笔记
  20. 不动点迭代(Fixed Point Iteration)

热门文章

  1. Python进阶07 函数对象
  2. github如何删除一个repository【找不到settings】
  3. vscode快捷操作
  4. php post 过滤,ThinkPHP技巧-POST过滤
  5. 使用Python操作MySQL数据库
  6. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  7. LuoGU 线性DP
  8. 【VS开发】【编程开发】【C/C++开发】结构体中的数组与指针的内存分配情况说明...
  9. 修改Linux安装软件镜像源为阿里云
  10. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法...