解决C#中ListView数据刷新时界面闪烁的问题
2022-07-08 09:28 狼人:-) 阅读(1581) 评论(0) 编辑 收藏 举报通常往ListView不断写入数据时,会发现ListView上的数据存在抖动闪烁的问题。对于追求完美的强迫症晚期患者而言,这一点是无法容忍的。同时也带来不良的用户体验。
下面通过双缓冲的方法解决该问题。
1. 新建一个类
public class DoubleBufferListView : ListView
{
public DoubleBufferListView()
{
SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint, true);
UpdateStyles();
}
}
2. 实例化这个类,并在Form中具体设置
DoubleBufferListView listView1 = new DoubleBufferListView();
private void Spurious_Test_Pannel_Load(object sender, EventArgs e)
{
foreach (TabPage p in this.tabControl1.TabPages)
{
p.Parent = null;
}
this.tabPage1.Controls.Add(listView1);
listView1.GridLines = true; // 打开Grid
listView1.View = View.Details; // detail视图
listView1.FullRowSelect = true; // 行全选
listView1.Dock = DockStyle.Fill; // 填充父容器
listView1.BackColor = Color.Azure; // background color
}
3.往该ListView控件内写入数据,看最后的实现结果
public void myFun()
{
listView1.Columns.Add("Num");
listView1.Columns.Add("Result");
for (int i = 0; i < 20; i++)
{
ListViewItem p = listView1.Items.Add(i.ToString());
p.SubItems.Add("This is test" + i.ToString());
}
Thread.Sleep(300);
}
4.新建一个Button控件调用上面的自定义方法
private void button1_Click(object sender, EventArgs e)
{
Thread thread1 = new Thread(new ThreadStart(delegate
{
myFun();
}));
thread1.IsBackground = true;
thread1.Start();
}
————————————————
版权声明:本文为CSDN博主「吾性圣人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/IllegalName/article/details/64438108
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2014-07-08 JS获取客户端系统当前时区
2012-07-08 Excel表格的35招必学秘技(学会计的快来转载,留着以后用)
2011-07-08 淘宝店家“坑爹”的“一元包邮”秒杀给我们带来了什么?带三个视频短片案例分享!