在父窗口下创建几个子窗,但运行时每当切换子窗口时,窗口闪的厉害.当把子窗口的windowstate属性改为maximixed时,子窗口不闪了,但是在父窗口还是闪,尤其是菜单栏.我想主要原因是菜单栏最左边的有一个icon,但是先卸再加,造成闪烁.请问如何才能彻底解决这些问题.

解决方案 »

  1.   

    // 启用双缓冲
    public void EnableDoubleBuffering()
    {
       // Set the value of the double-buffering style bits to true.
       this.SetStyle(ControlStyles.DoubleBuffer | 
          ControlStyles.UserPaint | 
          ControlStyles.AllPaintingInWmPaint,
          true);
       this.UpdateStyles();
    }
      

  2.   

    this.SetStyle(ControlStyles.DoubleBuffer,true);//设置双缓冲,防止图像抖动
    this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);// 忽略系统消息,防止图像闪烁
    this.SetStyle(ControlStyles.UserMouse,true);//控制鼠标完成事件