例如在FlowLayoutPanel添加100个Button控件,则载入这些控件时都是一个个跟跑马灯似的出来,界面更新时也闪烁得厉害,怎样才能让它不闪烁,双缓冲具体怎么弄

解决方案 »

  1.   

    Load:SetStyle(ControlStyles.UserPaint, true); 
    SetStyle(ControlStyles.AllPaintingInWmPaint, true);//防止窗口跳动
    SetStyle(ControlStyles.DoubleBuffer, true); //防止控件跳动 
      

  2.   

    你可以试试用AddRange()方法一次性加入,而不是调用.Add() 一个一个加入。先把要加入的控件全部生成好、放入一个数组,然后使用AddRange()一次性加入,速度非常快并且没有很明显的闪烁。
      

  3.   

    如果情况还不理想就考虑使用
    new Thread((ThreadStart)delegate
    {
       for(int i=1;i<=100;i++)
       {
        Control.Invoke((MethodInvoker)delegate
       {
        
        }); 
       } 
    }).Start();
      

  4.   

    那个缓冲对你可能无效,试试flowLayoutPanel1.Controls.AddRange加入一个数组吧
      

  5.   


    添加之前调用:
    SuspendLayout ()添加完调用:
    SuspendLayout ()