当前位置:   article > 正文

C# 控件闪烁问题解决办法_c#窗口大小变化是晃动

c#窗口大小变化是晃动

控件闪烁目前了解的原因无非是各个控件绘制的先后的问题导致的,解决绘制的问题推荐两个方式

1.双缓冲 

可以在控件初始化设置,注意父窗体要设置运行允许双缓冲

  1.             SetStyle(ControlStyles.UserPaint, true);
  2.             SetStyle(ControlStyles.AllPaintingInWmPaint, true);
  3.             SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
  4.             this.UpdateStyles();

双缓存说白了就是先会绘制到缓存中,而不是直接绘制到屏幕。有些情况下感觉没有效果,其实不然,只是控件太多,我们不能保证每一控件都是双缓冲

2.CreateParams

自定义控件内添加:

  1. /// <summary>
  2. /// 封装创建控件时所需的信息
  3. /// </summary>
  4. protected override CreateParams CreateParams
  5. {
  6. get
  7. {
  8. var parms = base.CreateParams;
  9. parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
  10. return parms;
  11. }
  12. }

调用的窗体里添加:

  1. /// <summary>
  2. /// 封装创建控件时所需的信息
  3. /// </summary>
  4. protected override CreateParams CreateParams
  5. {
  6.     get
  7.     {
  8. CreateParams cp = base.CreateParams;
  9. cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
  10. return cp;
  11.     }
  12. }

第二种操作简单,作用也比较明显

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/638813
推荐阅读
相关标签
  

闽ICP备14008679号