WINFORM 多控件闪烁问题

比如一个form中有20个picturebox或自定义图片控件.采用该方式可以解决依次加载闪烁问题.
注, 重载CreateParams能让控件重绘提速。所以然待究。然,Vista以下操作系统会出现CPU满载
protected override CreateParams CreateParams
{
    get
    {
       if( Environment.OSVersion.Version.Major >= 6 )
        { 
            // Vista以上       
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;
            return cp;
        }
        else
        {
            return base.CreateParams;
        }
    }
}

另外一个方法是调用win API.经过测试,再第一种方法使用后,部分界面存在延迟显示的问题,经该方法解决.
注,yourCtrl.Handler可通过form的this.Handler获取.
[System.Runtime.InteropServices.DllImport( "user32" )]
private static extern int SendMessage( IntPtr hwnd, int wMsg, int wParam, IntPtr lParam ); 
private const int WM_SETREDRAW = 0xB; 
 
private void RefreshYourCtrl()
    SendMessage( yourCtrl.Handle, WM_SETREDRAW, 0, IntPtr.Zero );//禁止重绘 
    // 重新布局 
  SendMessage( yourCtrl.Handle, WM_SETREDRAW, 1, IntPtr.Zero );//取消禁止 
  yourCtrl.Refresh(); 
}

最后提一个最好的方法:用GDI可以有效解决控件多的闪烁问题。

转载于:https://www.cnblogs.com/sunlyk/p/7477019.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值