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使用缓存避免数据更新闪屏 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)