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

WinForm 用BringToFront切换控件,会闪烁
WinForm,不管开启或是关闭双缓冲设置,结果都是闪烁。

WinForm里有多个WebBrowser控件,大小都是填满WinForm,且Visible属性都是true。由一个列表控件控制显示。选中列表控件的某项,对应的WebBrowser会显示出来。使用的是WebBrowser的BringToFront方法。但当执行时,会出现以下效果:

  原WebBrowser画面 -> 整个WinForm变白 -> 新的WebBrowser显示出来

其中WinForm变白的过程很明显,造成闪烁。

该如何避免这种闪烁?WebBrowser自己是否有双缓冲机制?
加了WinForm的SuspendLayout()和ResumeLayout()也没有作用。

如果不适用BringToFront方法,还有什么其他方法实现切换?


------解决方案--------------------
应该是你切换时,同时对 WebBrowser进行navigate了吧,那样 WebBrowser会先白一下,然后加载新页面
------解决方案--------------------
怀疑快速重新加载了页面,造成的闪烁。