日期:2014-05-17  浏览次数:21056 次

winform 怎样防止窗体闪屏!
用过双缓存,基本没啥用! 

在窗体启动前将窗体隐藏,加载完后再显示,这似乎有点作用,大效果不大明显! 在单击tabcontrol控件的另一个选项卡后再单击回来,明显闪烁很大!  tabcontrol控件中布局用了不少panel控件!

还一个是图片比较大! 我试过背景图片小一些,闪烁明显小一些! 

请问大伙有啥办法没有! 我怀疑有循环重绘?  怎样防止重绘?举些例子,列出代码!谢谢了!

------解决方案--------------------
和你的窗体设计有很大关系,比如控件太多,资源太大等等,已经你切换tab做了什么
------解决方案--------------------
在tabcontrol加一个大的panel填满整个tabcontrol
把所有小panel加进去   大的panel  Visible为false  最后再为true
------解决方案--------------------
阻止重绘和恢复重绘。
------解决方案--------------------

[DllImport("User32.dll", CharSet=CharSet.Auto, SetLastError=true)] 
internal static extern int SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);

//开始对控件操作

禁止重绘:SendMessage(禁止重绘的控件.Handle, 11, 0, 0);
//对控件的操作过程

恢复重绘:SendMessage(恢复重绘的控件.Handle, 11, -1, 0);