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可以有效解决控件多的闪烁问题。
欢迎C#或Winform技术交流,C#交流群:83868794
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步