C# 解决ListView控件显示数据出现闪屏的问题
一、发现问题
如果发送数据过快的情况下,ListVies滚屏显示数据时会显示闪屏,如下所示现象:

二、解决问题
根据出现闪屏的情况,在网上查了资料要使用双缓存的办法来处理。其原理是数据在缓存区中进行处理,处理之后再把结果显示出来。
自己先新定义一个ListViewBuff类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; //增加引入窗体命名空间,支持窗体相关的类
namespace WzCan_DeviceExploer
{
class ListViewBuff : System.Windows.Forms.ListView //自定义一个类ListViewBuff 继承自System.Windows.Forms.ListView
{
public ListViewBuff()
{
this.SetStyle( //设置控件的样式和行为
ControlStyles.DoubleBuffer| //绘制在缓冲区中进行,完成后将结果输出到屏幕上。双重缓冲区可防止由控件重绘引起的闪烁
ControlStyles.OptimizedDoubleBuffer| //控件首先在缓冲区中绘制,而不是直接绘制到屏幕上,这样可以减少闪烁
ControlStyles.AllPaintingInWmPaint,true); //控件将忽略WM_ERASEBKGND(当窗口背景必须被擦除时 例如窗口改变大小时)窗口消息以减少闪烁
UpdateStyles(); //更新控件的样式和行为
}
}
}
然后找到窗体Forms程序中定义LiewView的位置:
private System.Windows.Forms.ListView CanBuslistView;
this.CanBuslistView = new System.Windows.Forms.ListView();
修改成如下:
private ListViewBuff CanBuslistView; //yxl test add 增加listview双缓存处理 2017.09.26
this.CanBuslistView = new WzCan_DeviceExploer.ListViewBuff(); //增加双缓存 add yxl 2017.09.26
添加双缓存后不会有闪屏的现象,实现效果如下:

三、参考资料
http://www.cnblogs.com/94cool/archive/2013/02/06/2899995.html
http://www.cnblogs.com/JiYF/p/6233313.html
http://www.cnblogs.com/1175429393wljblog/p/5684090.html
http://www.mamicode.com/info-detail-1242649.html
by 羊羊得亿
2017-09-26 ShenZhen
C# 解决ListView控件显示数据出现闪屏的问题的更多相关文章
- 使用Listview控件显示数据
1.图像列表控件 ImageList是含有图像对象的集合,可以通过索引或关键字引用该集合中的每个对象. ImageList空间的属性 属性 说明 Images 存储在图像列表中的所有图像 ImageS ...
- Windows程序==>>使用ListView控件展示数据
使用ListView控件展示数据 01.ImageList控件 1.了解了解 属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Trans ...
- Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php
Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处 ...
- WinForm 之 使用ListView控件展示数据
在学习了这么多的WinForm基本控件后,今天在来学习一个比较有意思的包含图片的控件! >>>图像列表控件 ImageList是含有图像对象的集合,可以通过索引或关键字引用该集合中的 ...
- Delphi7连接MySql数据库-DBGrid控件显示数据
一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...
- 使用ListView控件展示数据
属性名称 说明items 指定显示那种视图View 指定显示那种视图largelmagelist 大图标图像的imagelist控件SmallLmagelist 小图标图像的imag ...
- NPOI导出WPF DataGrid控件显示数据
最近做个项目,需要导出DataGrid显示的数据,中间遇到了不少的坑,在此纪录一下,方便以后查看,也希望能给用到的人,一点帮助. 导出DataGrid显示的数据,并不是导出DataGrid的Items ...
- ListView控件(上)数据适配器:ListView绑定监听是SetOnItemClickListener
(一) 1.效果图: 2.MainActivity.java package com.example.app5; import android.support.v7.app.AppCompatActi ...
- asp.net LINQ LinqDataSource控件显示数据和DropdownList显示数据
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
随机推荐
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】
[063-Unique Paths II(唯一路径问题II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Follow up for "Unique Pa ...
- Google Nexus 5x Android 7.0 Root
很久没有写东西了,准备重新养成这个好习惯.因为自己一直在用Nexus,前段时间自己的Nexus5老的不行了,所以买了台5x,一直没时间root,今天有时间终于有时间弄一下. 在这里整理分享一下. 开始 ...
- Sub Thread to update main Thread (UI) 2
Sub Thread to update main Thread (UI) 2 Handler.post(somethread); Handler.sendMessage("Msg&quo ...
- ES6学习笔记(八)第七种类型Symbol
1.概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种 ...
- 10G安装DataGuard
最后更新时间:2013年8月4日,星期日 ★ oracle 10G安装环境 数据库软件安装环境不详细描述,网上到处有这方面资料,下面只简单描述下. 也可参考官方文档: http://docs.orac ...
- react基础课程一简述JSX及目录关系
简述JSX及目录关系 简述:它被称为JSX,它是JavaScript的语法扩展,JSX是一种模板语言,但它具有JavaScript的全部功能.所以学习jsx还是需要学习基础的javaScript的. ...
- HOJ——T 1867 经理的烦恼
http://acm.hit.edu.cn/hoj/problem/view?id=1867 Source : HCPC 2005 Spring Time limit : 2 sec Memo ...
- 华为荣耀3C最新版ROM的root,(4.7.1和4.8.1等等通用方法)
手头一台honor 3c的机器.应该是线刷的时候,把IMEI给刷掉了.导致移动2G卡无法上网. 刷了4.7.1或者4.8.1.尝试了全部方法都root失败了. 正好我手头有6582的代码.我想.既然系 ...
- PopupMenu-使用实例跟监听事件
今天需要给一个控件添加弹出菜单功能.就顺便学习了下popupMenu的使用,记录下来. 它的使用其实也非常的简单,看如下代码 popupMenu = new PopupMenu(MainActivit ...
- 65.Express---express-session
转自:https://blog.csdn.net/zhangweiwtmdbf/article/details/50723816 第一部分 session概述 1.1 session 是什么? Ses ...