其实不管是ListView还是其他的控件,我相信对于BeginUpdate()和EndUpdate()的理解都是相同的。
首先,我们先建立一个概念,在对ListView添加一组Items的时候我们应该用哪几种方法。第一种,一次以集合的方式,对一大堆Items一次加到ListView对象中去。第二种,每次加一个Item,用循环的方法全部把它们加完。
BeginUpdate()和EndUpdate()就是针对第二种方法的。如果没有使用BeginUpdate()和EndUpdate(),那么每添加一个Item,ListView都要重绘,那么当要添加的Items很多的时候,屏幕就会闪烁的现象。如果在添加Item之前使用BeginUpdate(),那么,ListView其实就不动了,等到所有的Item都添加完了,使用EndUpdate()一次重绘ListView,这样就不会发生屏幕闪烁的现象了。
将多个项添加到 ListView 的首选方法是使用 ListView..::.ListViewItemCollection(通过 ListView 的 Items 属性访问)的 AddRange 方法。这使您得以在一个操作中就可将一组项添加到列表中。然而,如果希望使用 ListView..::.ListViewItemCollection 类的 Add 方法以每次一个的方式添加项,则可以使用 BeginUpdate 方法防止控件在每次添加项时重新绘制 ListView。在完成将项添加到控件的任务后,请调用 EndUpdate 方法以使 ListView 能够重新绘制。这种添加项的方法可以防止将大量项添加到控件时发生闪烁的 ListView 绘制。
如果多次调用 BeginUpdate,则也必须调用相同次数的 EndUpdate。只有在最后一次调用 EndUpdate 时,才会重新绘制 ListView。除了这次调用,对 BeginUpdate 的其他多次调用都不起任何作用。
此句关键,要不listview无法显示出来。