WinForm 加载大数据时不闪烁的ListView

自己之前做小工具的时候,遇到这个问题,记录一下。。。

 

namespace 相册处理

{

    //将ListView重载为此新类,解决加载过程中闪烁的问题

    //在designer.cs中改写:

    //private ListViewNeverFlickering listView1;

    //this.listView1 = new ListViewNeverFlickering();

 

    internal class ListViewNeverFlickering : System.Windows.Forms.ListView

    {

        public ListViewNeverFlickering()

        {

            // Activate double buffering

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

            }

        }

    }

}

 

posted @ 2020-03-22 23:11  Homegu  阅读(325)  评论(0编辑  收藏  举报