天天看点

C# Winform ListView 双缓冲开启

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);
                }
            }
        }
           

使用ListView之前 声明下 然后替换掉就启用双缓冲了。

 private System.Windows.Forms.ListView listView1;  --->   private ListViewNF listView1;

this.listView1 = new System.Windows.Forms.ListView();  --->   this.listView1 = new ListViewNF();