C# ListView双缓存代码,解决闪屏问题

首先,自定义一个类ListViewNF,继承自 System.Windows.Forms.ListView。

代码:

复制代码
using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;



namespace ListViewDoubleTest
{

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

            }

        }

    }

}


复制代码

然后,找到我们的Form代码中定义ListView的位置(Form1.Designer.cs)

将原来的 System.Windows.Forms.ListView listView1 修改。

 

示例:

this.listView1 = new ListViewDoubleTest.ListViewNF();

private ListViewNF listView1;

你可能感兴趣的:(ListView)