zoukankan      html  css  js  c++  java
  • C#中使用ListView动态添加数据不闪烁

    手头正在做一个通讯网关,选用了C#的WINFORM作界面

    用了一个ListView来实时的显示数据传输情况,于是问题就来了,当数据量比较大,而且处理速度很快时,这该死的界面闪得人眼花...

    废话不多说,直接上代码:

    首先,自定义一个类ListViewNF,继承自 System.Windows.Forms.ListView

    (NF=Never/No Flickering)

    class ListViewNF : System.Windows.Forms.ListView
    {
    public ListViewNF()
    {
    // 开启双缓冲
    this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

    // Enable the OnNotifyMessage event so we get a chance to filter out
    // Windows messages before they get to the form's WndProc
    this.SetStyle(ControlStyles.EnableNotifyMessage, true);
    }

    protected override void OnNotifyMessage(Message m)
    {
    //Filter out the WM_ERASEBKGND message
    if (m.Msg != 0x14)
    {
    base.OnNotifyMessage(m);
    }

    }


    }


    然后,修改我们的Form代码中定义ListView的位置,将原来的

    System.Windows.Forms.ListView listView1;

    修改为

    ListViewNF listView1;

    ok,然后随便怎么insert\add这个listView1,都不会有半点的闪烁了,

  • 相关阅读:
    Mysql分布式事务
    Mysql锁
    Mysql事务隔离级别
    java 资源监控
    Mysql子查询
    javaWeb四大域对象
    KVM 迁移
    KVM 虚拟化
    网络基础
    系统简单启动过程
  • 原文地址:https://www.cnblogs.com/zdkjob/p/2324618.html
Copyright © 2011-2022 走看看