我需要刷新窗體中的控件,爲此我使用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();