1. 程式人生 > >C# Winform ListView 雙緩衝開啟

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