我需要刷新窗体中的控件,为此我使用this.Refresh()
,但窗体闪烁。我怎样才能顺利刷新控件?刷新表格上的所有控件
使用Application.DoEvents()
是否顺利,但使用Application.DoEvents()
来刷新是个不错的主意?
我需要刷新窗体中的控件,为此我使用this.Refresh()
,但窗体闪烁。我怎样才能顺利刷新控件?刷新表格上的所有控件
使用Application.DoEvents()
是否顺利,但使用Application.DoEvents()
来刷新是个不错的主意?
下面是有关的WinForms应用减少闪烁MSDN上的链接:
http://msdn.microsoft.com/en-us/library/3t7htc9c(VS.80).aspx
最简单的方法是设置DoubleBuffered属性的形式实现。
如果表单闪烁,表示它已经获得大量更新,导致重新绘制。
如果可能的话,你应该进行配置文件查看是什么导致所有的更新,并尝试和删除一些,因为将显然是重复的。
如果可能的话,将后台操作转移到异步线程 - 但记住要调用回UI线程以获取对实际控件的任何更新。
作为最佳实践,通常最好避免泵送消息循环(即调用Application.DoEvents()),因为它可能会导致过多的绘画和更多的闪烁不少。记住它强制处理所有事件,而不仅仅是绘制事件。
Form.ActiveForm.Update();