返回> 网站首页 

[转载]ListView的BeginUpdate()和EndUpdate()的作用

yoours2014-04-10 11:51:53 阅读 1430

简介一边听听音乐,一边写写文章。

其实不管是ListView还是其他的控件,对于BeginUpdate()和EndUpdate()的理解都是相同的。
首先,我们先建立一个概念,在对ListView添加一组Items的时候我们应该用哪几种方法。第一种,一次以集合的方式,对一大堆Items一次加到ListView对象中去。第二种,每次加一个Item,用循环的方法全部把它们加完。
BeginUpdate()和EndUpdate()就是针对第二种方法的。如果没有使用BeginUpdate()和EndUpdate(),那么每添加一个Item,ListView都要重绘,那么当要添加的Items很多的时候,屏幕就会闪烁的现象。如果在添加Item之前使用BeginUpdate(),那么,ListView其实就不动了,等到所有的Item都添加完了,使用EndUpdate()一次重绘ListView,这样就不会发生屏幕闪烁的现象了。

解决闪烁问题 - 使用双缓冲,重写listview
class DoubleBufferListView : ListView
{
public DoubleBufferListView()
        {
                SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
                UpdateStyles();
          }
}

// 使用
DoubleBufferListView lv = new DoubleBufferListView();
this.Controls.Add(lv);

微信小程序扫码登陆

文章评论

1430人参与,0条评论