C#使用ListView控件對數據進行頻繁更新時,出現閃爍問題的解決辦法


C#中使用ListView控件的時候,頻繁更新里面的數據時,會出現閃爍的情況。

解決辦法:使用雙緩沖,首先對listview類進行重寫,然后通過繼承重寫的類,進行控件的初始化定義之后,再進行頻繁數據更新是不會出現閃爍現象的。

//對ListView進行繼承重寫:
public class DoubleBufferListView : ListView
    {
        public DoubleBufferListView()
        {
            SetStyle(ControlStyles.DoubleBuffer |
              ControlStyles.OptimizedDoubleBuffer |
              ControlStyles.AllPaintingInWmPaint, true);
            UpdateStyles();
        }
    }

下面為使用的一個實例:

//視圖函數中定義一個Listview控件:
DoubleBufferListView doubleBufferListView1= new DoubleBufferListView();this.doubleBufferListView1.Location = new System.Drawing.Point(50, 37);
this.doubleBufferListView1.Name = "doubleBufferListView1";
this.doubleBufferListView1.Size = new System.Drawing.Size(400, 191);this.doubleBufferListView1.View = System.Windows.Forms.View.Details;

//添加listview到主視圖
this.Controls.Add(this.doubleBufferListView1); //對控件進行列表頭的添加 doubleBufferListView1.Clear(); doubleBufferListView1.Columns.Add("Action", 80, System.Windows.Forms.HorizontalAlignment.Left); doubleBufferListView1.Columns.Add("value", 80, System.Windows.Forms.HorizontalAlignment.Right); doubleBufferListView1.Columns.Add("Action", 80, System.Windows.Forms.HorizontalAlignment.Left); doubleBufferListView1.Columns.Add("value", 80, System.Windows.Forms.HorizontalAlignment.Left); //添加行數據 string[] listViewData = new string[4]; listViewData[0] = "Action"; listViewData[1] = "1"; listViewData[2] = "Action"; listViewData[3] = "1"; ListViewItem lvItem = new ListViewItem(listViewData, 0); doubleBufferView1.Items.Add(lvItem);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM