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;