许多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();
}
}

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

最新文章

  1. javascript中正则表达式的基础语法
  2. MyEclipse中查询
  3. poj3415 Common Substrings(后缀数组,单调栈 | 后缀自动机)
  4. 一些常用的IOS开发网站
  5. bzoj 3572: [Hnoi2014]世界树 虚树 && AC500
  6. Android消息机制不完全解析(下)
  7. Building Apps for Windows 10 on LattePanda–Jump Start
  8. Jenkins 不同角色不同视图及不同权限设置
  9. 题解-HAOI2018全套
  10. poj3126 Prime Path 广搜bfs
  11. Win1064位下mysql插入百万行数据耗时问题
  12. Gym 101981K - Kangaroo Puzzle - [玄学][2018-2019 ACM-ICPC Asia Nanjing Regional Contest Problem K]
  13. Oracle错误——user ** lacks CREATE SESSION privilege logon denied
  14. 学习日 day1
  15. Web Api:基于RESTful标准
  16. iframe调用父页面函数用法举例
  17. zabbix server 在配置客户端的时候 在zabbix server端的/etc/hosts文件的hostname 对应的ip这样可以更快的让server端发现agent端
  18. java 创建最大堆
  19. day6 xml文件格式的处理
  20. php开发中sql语句拼接示例(插入、查询、更新)

热门文章

  1. Navicat 提示 Access violation at address ***(如004ECCF4) in module ‘navicat.exe’. Read of address ***(如00000048)
  2. R语言 启动报错 *** glibc detected *** /usr/lib64/R/bin/exec/R: free(): invalid next size (fast): 0x000000000263a420 *** 错误 解决方案
  3. 加入ffmpeg播放视屏
  4. fiddler 使用记录
  5. error MSB3073: 命令“copy /y
  6. JS中实现种子随机数
  7. sanchi
  8. jsonp 的实质
  9. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
  10. matlab知识