许多Windows 窗体控件(例如,ListView 和 TreeView 控件)实现了 BeginUpdate 和EndUpdate 方法,至于为何要这样用简单说明一下。

当我们向一个Listview控件中添加一组Item的时候,第一种方式就是把Item全部放到一个集合里,一次性加到listview中,另一种方式就是用循环的方法一次加一个Item进去。我们要说的就是这第二种方式。

如果没有使用BeginUpdate()和EndUpdate(),那么每添加一个Item,ListView都要重绘,那么当要添加的Items很多的时候,屏幕就会闪烁的现象。如果在添加Item之前使用BeginUpdate(),那么,ListView其实就不动了,等到所有的Item都添加完了,使用EndUpdate()一次重绘ListView,这样就不会发生屏幕闪烁的现象了。这也就是我们在插入数据项操作的前后要声明 BeginUpdate() 和 EndUpdate()的原因所在了。

但是如果长时间连续不断的往Listview里加数据,BeginUpdate() 和 EndUpdate()只能缓解,却不是根本的解决办法,还是会有闪烁的情况发生。这时我们就要用到双缓冲了,可以尝试重写Listview.

class DoubleBufferListView : ListView
{
public DoubleBufferListView()
{
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
UpdateStyles();
}
}

 这样就应该可以解决闪烁的问题了。

ListView的BeginUpdate()和EndUpdate()作用相关推荐

  1. Delphi中BeginUpdate和EndUpdate作用

    许多 Windows 窗体控件(例如,ListView 和 TreeView 控件)实现了 BeginUpdate 和EndUpdate 方法,它们在操纵基础数据或控件属性时取消了控件的重新绘制.通过 ...

  2. ListView的setSelection()不起作用的原因

    2019独角兽企业重金招聘Python工程师标准>>> 经常会有这种case, 希望打开一个listview的时候能够自动设置显示的位置, setSelection(int pos) ...

  3. System.Windows.Forms.ListView

    呈现一个 Windows 列表视图控件,并且能够以四种不同的视图中的任何一种来显示一个子项集合. 命名空间:System.Windows.Forms 汇编集:System.Windows.Forms( ...

  4. C#中ListView详解

    ListView是一个Windows 列表视图控件,该控件显示可用五种不同视图(LargeIcon,Details,SmallIcon,List,Tile)之一显示项的集合. 对于这四种视图,官方文档 ...

  5. 毕设(五)ListView

    ListView 控件可使用四种不同视图显示项目.通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本. 可使用 ListView 控件将称作 ListItem 对象的列表条目组织成 ...

  6. android listview适配器使用,android – 使用适配器在Listview中填充Listview

    我有一个片段.这个片段在他的onCreateView方法上加载的视图有一个ListView(A)(填充在Adapter(A)中).但是,这个ListView(A)里面有另一个ListView(B).所 ...

  7. ListView控件的理解——自洽理论

    写在前面的话: *标题中已经说明,是自洽理论.因此,有几率会有理解错误.但是,你不可以因此骂我. -我这个人经不起别人的批评,如果你批评我,我就,我就.... ## <第一行代码>读书笔记 ...

  8. Android 设置listview在scrollView中不滚动的方法

    最近遇到一个问题,listview的父控件为scrollview,这样一来scrollview的滚动效果就没有啦! 其实只要通过一个设置就可以解决这个问题,让scrollview的滚动起作用,而lis ...

  9. Delphi小技巧杂记

    //获取任务栏尺寸 procedure TForm1.Button1Click(Sender: TObject); var TaskList: HWnd; Bordered: TRect; begin ...

最新文章

  1. 微信小程序模板消息(服务通知消息)原始post工具封装(不使用jar包--坑比较多),解决47001(JSON格式)和中文乱码问题
  2. oracle 连接池sql跟踪,实现SQLServer、MySQL和oracle数据库连接池
  3. git 忽略文件不起作用
  4. 基于.net的微服务架构下的开发测试环境运维实践
  5. Qt——P10 自定义的信号和槽
  6. SpringSecurity系列(二) Spring Security入门
  7. 计算机声卡视频无法安装驱动程序,声卡驱动装不上怎么办 声卡驱动装不上解决方法【图文】...
  8. 8款国内外主流商业智能BI工具分析,助你轻松选型!
  9. 我想不通,MySQL 为什么使用 B+ 树来作索引?
  10. [ISSUE]angularjs resolve: $injector:unpr] Unknown provider:
  11. Sql - EXISTS 用于子查询
  12. 解决vscode进行chrome调试时报错:localhost拒绝了我们的连接请求
  13. html表单及其属性
  14. 转:北京地铁听证会结束,地铁公交调价方案2胜出,来看看涨价后多了多少钱??...
  15. 百度创始人李彦宏:互联网的下一章
  16. Android Back回退按钮
  17. 电商项目--------------------商品(SKU)规格、价格功能
  18. 遵化市10余个局委办一把手调研九次方大数据,详细部署数字遵化建设
  19. easyUI新增、删除
  20. buddypress主题_WordPress Gone Social-BuddyPress

热门文章

  1. 幼儿拼图识字 v1.0 官网
  2. java初级联系_Java基础练习1(数据类型转换)
  3. 【数学】【裂项相消】Integration-牛客
  4. 李迟2022年10月工作生活总结
  5. java计算机毕业设计快递物流管理源码+数据库+lw文档+系统
  6. Windows移动硬盘修复工具C源代码
  7. G笔试题-2012年9月25日
  8. matlab求解复杂方程,帮忙用matlab求解复杂方程
  9. java:JAVA获取日期时间加一年或加一月或加一天
  10. 应届毕业生注意了,这些典型的学生思维正在阻碍你的职业发展