如果是ui主线程加载不会闪烁,把加载数据的代码通过委托放入子线程就会闪烁。我是自定义的控件,也采用了网上说的双缓存等机制,也试过beginupdata方法,均没有用,不知道有没有大佬知道原因。而且加载前9行数据不会闪烁,从第十行开始出现闪烁问题。

解决方案 »

  1.   

    修改双缓存TreeView的,list的不知道管用不,试一试。TreeView不闪了 public class ListViewEx : ListView
            {
                protected override void OnHandleCreated(EventArgs e)
                {
                    SendMessage(this.Handle, TVM_SETEXTENDEDSTYLE, (IntPtr)TVS_EX_DOUBLEBUFFER, (IntPtr)TVS_EX_DOUBLEBUFFER);
                    base.OnHandleCreated(e);
                }
                private const int TVM_SETEXTENDEDSTYLE = 0x1100 + 44;
                private const int TVM_GETEXTENDEDSTYLE = 0x1100 + 45;
                private const int TVS_EX_DOUBLEBUFFER = 0x0004;
                [DllImport("user32.dll")]
                private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
            }
      

  2.   

    你的意思是双缓存只适用treeview吗?
      

  3.   


    ListView 试了么?有效果么?
      

  4.   

    listview虚拟加载