开发的项目每个界面中控件比较多,每次界面切换时都有闪烁现象,找了好久都没有理想的方法
有什么办法解决?
如 有什么API函数可以控制刷新?

解决方案 »

  1.   

    微软的方法就是使用
    this.SuspendLayout();              //临时挂起控件的布局逻辑
    .....
    this.ResumeLayout(false);          //恢复把要对界面做改变的代码写在这2句话中间....不知道是不是可以解决楼主的问题....
      

  2.   

    在FORM 的 ONACTIVE 和 ONDEACTIVE 里用上面的代码
      

  3.   

    以上的方法已经尝试过了,没有效果。我想关键是在net的重绘比较慢把,好像有API函数可以控制重绘,将界面中所有都画好后在显示,但我不知道是那个API函数;各位帮忙了,不知道的也帮ding一下
    项目比较紧,谢谢了
      

  4.   

    SetStyle(ControlStyles.UserPaint, true);
    SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
    SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
      

  5.   

    可以查查关于MFC中的MemDC相关资料,也许有点启发。
      

  6.   

    嘿嘿,我想这样可以么?你让你的界面闪烁作为一个动画效果~~  
    窗体关闭的时候,写close事件:这里通过改变透明度,做个淡出效果
    窗体打开的时候,写Load时间:这里通过改变透明度,作个淡入效果
      

  7.   

    // Set the value of the double-buffering style bits to true.
    this.SetStyle(ControlStyles.DoubleBuffer | 
          ControlStyles.UserPaint | 
          ControlStyles.AllPaintingInWmPaint,
          true);
    this.UpdateStyles();
      

  8.   

    微软的逻辑:“你该更新软件了,装个补丁先!”
    Intel的逻辑:“你该换新CPU了,来,买我们的折腾5代10G!”

    关注~
      

  9.   

    You can use Paint Event,override the method of paintevent
      

  10.   

    http://www.qq166.com/vip.htm?QQ=685586
    腾讯过大年,六位数的QQ不要要钱,点击马上申请!
      

  11.   

    this.SetStyle(ControlStyles.DoubleBuffer | 
          ControlStyles.UserPaint | 
          ControlStyles.AllPaintingInWmPaint,
          true);
    this.UpdateStyles();