一个 mdi 结构的系统, 所有的子窗体都是最大化状态。然后我用  subForm.Active 激活某个子窗体时, 画面闪烁很严重从画面上看来,假如有 10个子窗体, 那在切换的时候, 系统会先将这十个子窗体的大小恢复为 正常状态,然后再将 subForm 激活并设置成最大化状态, 这样当然会闪烁,请问有什么办法能优化一下。

解决方案 »

  1.   

    http://topic.csdn.net/u/20080428/17/B14B5A62-FCBF-4B31-A060-CEF3C87D3A53.html
      

  2.   

     //以下三行消除主界面闪烁
               this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
              this.SetStyle(ControlStyles.DoubleBuffer, true);
                this.SetStyle(ControlStyles.UserPaint, true);
      

  3.   

    subForm.Active 就有这种问题,看看能不能换个方法激活。现在没开发环境,有时间的话试试
      

  4.   

    这里有代码,因为我是VS2005,没有调试,你下载下看看吧!
    http://download.csdn.net/source/1409123
      

  5.   

    为什么要加载10个,这种太费资源。最好的办法就是用的时候加载
    Panel.Controls.Add(....);
    Panel.Controls.Remove(....);
      

  6.   

    这个东东好像用doublebuffered是没有用的
      

  7.   

    subForm.Active 就有这种问题,看看能不能换个方法激活。现在没开发环境,有时间的话试试
    ------------------------------
    对, 很多人说 Active 有这个毛病, 但不用 Active 用什么呢?
      

  8.   

    建议不要用那个窗口最大化的属性
    我一般就是把窗口的边框隐掉,然后加载窗口的时候根据工作区大小设置窗口大小,这样切换的时候(Active)的时候,子窗口边框闪烁就没有了