winform 程序界面控件太多,如何优化打开速度

小驴来这里学习 2015-07-21 05:07:55

原帖 关闭原帖是因为对winfom实在了解太少,问题好像没问到点子上。

现在我有一个winform程序,其中一个界面控件太多,定义了差不多1100多个,我也不确定是不是这个原因导致打开速度变慢。
我调试的时候发现InitializeComponent耗时最久,这里面有好多访问数据库的地方,被我改成不去访问数据库,速度基本没有改善。
下面这样的代码有1100多行,我是根据这个判断有这么多控件的,不知道是否正确。用了DevExpress的控件。

...
private DevExpress.XtraBars.BarManager barManager1;
private DevExpress.XtraBars.Bar bar1;
...
private DevExpress.XtraEditors.TextEdit textEdit2;
private DevExpress.XtraEditors.TextEdit textEdit3;
...


就像上一个帖子中 shingoscar 说的,先去找原因。
我试图通过ANTS Performance Profiler去查看哪里耗时最多,奈何软件第一次用,看不大明白啊。

现在我有两个问题,
1,如何找出哪个地方最耗时
2,如何让程序界面打开之后,显示一部分控件,其余的控件,在“后台”默默的加载出来



...全文
5355 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在窗体加载的时候使用this.SuspendLayout(); 这个事件将引发重新绘图的事件,如果介面上控件较多的话,改变控件某些属性时,由于不断地重画,性能变低,所以用suspendlayout来阻止。
qq_37371714 2017-01-19
  • 打赏
  • 举报
回复
撸主解决了嘛
问心剑阁 2016-10-12
  • 打赏
  • 举报
回复
怎么解决求解啊
「已注销」 2015-07-23
  • 打赏
  • 举报
回复
1000个控件,是多个窗体吗?
yaotomo 2015-07-23
  • 打赏
  • 举报
回复
异步加载怎么做,楼主可以示范一下代码吗?
weixin_30050509 2015-07-23
  • 打赏
  • 举报
回复
好多。 。。。。
survey999 2015-07-23
  • 打赏
  • 举报
回复
应该分离窗口的。像AX,NAV,GP那种ERP,都把功能分离了啊。物流、销售、制造、人力资源什么的,都是单独的分离出来,分离之后又分离……
引用 21 楼 xxxuan 的回复:
DevExpress最是垃圾,慢的要死,快使用ComponentOne控件,那可快了
如果要用第三方控件,我们公司也是用C1。
alwcelcs 2015-07-23
  • 打赏
  • 举报
回复
些方法没没试过! 把构造函数,按优先级分类到单独的方法。 主线程只做Form构造。 把其它方法用线程池,多线程执行。 (Control.CheckForIllegalCrossThreadCalls = false)关闭主窗口线程安全,不然其它线程访问不了。 缺点:不能靠鼠标调整UI 加载提升:未知 我的水平:昨天学的线程
  • 打赏
  • 举报
回复
使用多线程加载,不用的控件一定要注销,要显示的时候再加载
拜一刀 2015-07-23
  • 打赏
  • 举报
回复
弄个空白标签页做封面,写个某某系统之类的,程序开启时显示这页,然后慢慢加载?
_贺兰 2015-07-23
  • 打赏
  • 举报
回复
其实你该 换个角度解决这个问题 首先,到底有没有必要同时显示1000多个控件,我觉得绝大部分情况下 都是没必要的,因为使用者的精力和屏幕都是有限的,不可能同时使用这么多控件。 所以,解决问题的 方法就是 对 按需加载,每次 只加载 需要用到的,当需求变更的时候,动态调整,具体执行的时候 就要考虑如何切换,要考虑到用户的感受,不影响原来的需求。
撒哈拉_小猴 2015-07-23
  • 打赏
  • 举报
回复
楼主敢把界面贴出来看看吗?
jy251 2015-07-22
  • 打赏
  • 举报
回复
大量控件出现在一个winform里面,一般的做法都是使用gdi+自己画控件出来,而且还得加上双缓冲。 每一个控件,你new一个,都占用不少资源,但是你画出来的话,资源占用就成倍缩小
老李家的小二 2015-07-22
  • 打赏
  • 举报
回复
楼主,我真的特别想看看眼,看看高大上的界面
xxxuan 2015-07-22
  • 打赏
  • 举报
回复
DevExpress最是垃圾,慢的要死,快使用ComponentOne控件,那可快了
l2999019 2015-07-22
  • 打赏
  • 举报
回复
1100个控件..分批次加载可以不? - -. ...100个我都觉得不得了了...100*11..
mace11111 2015-07-22
  • 打赏
  • 举报
回复
计算一下DevExpress的启动速度
yang1216 2015-07-22
  • 打赏
  • 举报
回复
我也有同样问题,没那么多控件,不到一百个,打开的时候有明显卡顿。 用计时器掐过,需要半秒加载,我也不知道该怎么办
smthgdin_020 2015-07-22
  • 打赏
  • 举报
回复
设计问题吧。一个界面1000的控件本来设计商就有问题。从设计入手比起通过改代码现实得多,而且性能这东西也是个个环节叠加结果,不是单单优化代码就行。
特别 2015-07-22
  • 打赏
  • 举报
回复
神马功能要设计成这样
加载更多回复(19)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧