ListView使用缓存避免数据更新闪屏
2016-02-24 09:58:34 访问(2016) 赞(0) 踩(0)
相关下载:ListViewTest[release] ListViewTest[code]
-

-
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace ListViewTest
{
public class DoubleBufferListView : ListView
{
public DoubleBufferListView()
{
SetStyle(ControlStyles.DoubleBuffer
| ControlStyles.OptimizedDoubleBuffer
| ControlStyles.AllPaintingInWmPaint,
true);
UpdateStyles();
}
}
}
-
public FormUsedBuffer()
{
InitializeComponent();
//宽度和高度值必须大于等于1且不超过256
ImageList iList = new ImageList();
iList.ImageSize = new Size(1, 24);
//这样的结果在第一列的前面多出了1个分量的宽,所有行的高度为24
this.listView1.SmallImageList = iList;
InitData();
}
protected void InitData()
{
ListView
lv = listView1;
int colCount = lv.Columns.Count;
string[] sA = new string[colCount];
for (int i = 0; i < 100; ++i)
{
sA = new string[colCount];
for (int j = 0; j < colCount; ++j)
{
sA[j] = i.ToString() + " - " + j.ToString() + ":" + DateTime.Now.ToString();
}
ListViewItem item = new ListViewItem(sA);
lv.Items.Add(item);
item.UseItemStyleForSubItems = false;
item.SubItems[(i % colCount)].ForeColor = System.Drawing.Color.Red;
}
toolStripLabel_操作结果.Text = "初始化ListView:" + DateTime.Now.ToString("HH:mm:ss");
}
protected void ChangeData(bool isAll)
{
ListView
lv = listView1;
int colCount = lv.Columns.Count;
ListViewItem item = null;
int mod = 0;
for (int i = 0; i < 100; ++i)
{
item = lv.Items[i];
mod = (i % colCount);
for (int j = 0; j < colCount; ++j)
{
if (mod == j)
{
item.SubItems[j].Text
=
i.ToString() + " - " + j.ToString() + ":" + DateTime.Now.ToString();
}
else
{
if (isAll)
{
item.SubItems[j].Text
=
item.SubItems[j].Text;
}
}
}
}
toolStripLabel_操作结果.Text = "点击按钮操作完成:" + DateTime.Now.ToString("HH:mm:ss");
}
private void toolStripButton_只改动_Click(object sender, EventArgs e)
{
ChangeData(false);
}
private void toolStripButton_全部数据_Click(object sender, EventArgs e)
{
ChangeData(true);
}
标签:
ListView使用缓存避免数据更新闪屏 


上一条:
下一条:
相关评论
发表评论