找回密码
 立即注册

QQ登录

只需一步,快速开始

wangleiecho

中级会员

26

主题

94

帖子

658

积分

中级会员

积分
658

活字格认证

wangleiecho
中级会员   /  发表于:2012-10-16 15:44  /   查看:6289  /  回复:3
版主好,
关于SuspendLayout和ResumeLayout在帮助中有解释:
在使用嵌套循环修改每一个单元格时,像修改每一个单元格的值,这种情况肯定可以从先暂停布局,然后再恢复布局的方式中获益。

这个是不是可以理解为如果我要重数据库中读取数据,然后循环给farpoint赋值,那么使用这两个方法能提高速度呢?不过我测试好像数据影响不是很大。2000条的数据,基本速度是一样的,无论是肉眼观察还是跟踪sql读取的间隔时间。
我的代码应该也没问题:
结构:
this.fp.SuspendLayout();
//循环setvalue赋值
this.fp.ResumeLayout(true);

请教关于暂停布局的具体应用情况

3 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-10-16 15:49:00
沙发
回复 1楼wangleiecho的帖子

首先 ,
2000 条数据量对于 Winform 程序来说不算大。
我们在提出这种操作方式,一般用于以万为单位的数据源情况。
不过也应该有所帮助:

  1. System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
  2.             timer.Start();
  3.             //读数据this.fp.SuspendLayout();
  4.             //循环setvalue赋值
  5.          this.fp.ResumeLayout(true);
  6.          timer.Stop();
  7.             MessageBox.Show(timer.ElapsedMilliseconds.ToString());
复制代码
回复 使用道具 举报
wangleiecho
中级会员   /  发表于:2012-10-16 15:55:00
板凳
谢谢版主,我试了试,确实有用大概差了100毫秒,我的数据为2000条。
又学到一招,以后有大数据时候可以考虑用。
谢谢版主了。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-10-16 16:42:00
地板
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部