首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 無閃爍 ListView 實作(雙緩衝繪製)

     編輯:關於ASP.NET

繼承 ListView 並啟用雙緩衝樣式,可解決大量項目動態新增時的閃爍問題。

核心代碼

public partial class Form1 : Form {
    class DoubleBufferListView : ListView {
        public DoubleBufferListView() {
            SetStyle(ControlStyles.DoubleBuffer | 
                     ControlStyles.OptimizedDoubleBuffer | 
                     ControlStyles.AllPaintingInWmPaint, true);
            UpdateStyles();
        }
    }

    DoubleBufferListView lv = new DoubleBufferListView();

    private void Form1_Load(object sender, EventArgs e) {
        this.Controls.Add(lv);
        lv.Height = 300; lv.Width = 300;
        new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(doAdd)).Start();
    }

    void doAdd(object obj) {
        if (this.InvokeRequired) {
            this.Invoke(new System.Action<object>(doAdd), new object[] { obj });
        } else {
            for (int i = 0; i < 100; i++) {
                this.lv.Items.Add(new ListViewItem("jinjazz" + this.lv.Items.Count.ToString()));
                System.Threading.Thread.Sleep(10);
                Application.DoEvents();
            }
        }
    }
}

關鍵點

  • SetStyle 組合三個旗標:DoubleBuffer、OptimizedDoubleBuffer、AllPaintingInWmPaint,徹底消除重繪閃爍。
  • 跨執行緒更新 UI 必須透過 Invoke 回主執行緒,配合 Application.DoEvents() 保持介面回應。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved