Control.Refresh - does an Control.Invalidate followed by Control.Update.
Refresh: 強制控件使其工作區無效並立即重繪自己和任何子控件。== Invalidate Update
Control.Invalidate - invalidates a specific region of the Control (defaults to entire client area) and causes a paint message to be sent to the control.Invalidate marks the control (region, or rect) as in need of repainting, but doesn't immediately repaint (the repaint is triggered when everything else has been taken care of and the app becomes idle).
Invalidate: 使控件的特定區域(可以自己設置區域,從而提高性能)無效並向控件發送繪制消息。
將控件標記為需要重繪,但是不會立即執行刷新重繪,等到系統空閑時進行重繪。
Control.Update - causes the Paint event to occur immediately (Windows will normally wait until there are no other messages for the window to process, before raising the Paint event).Update causes the control to immediately repaint if any portions have been invalidated.
Update: 使控件重繪其工作區內的無效區域,立即調用Paint事件。若有無效區域,Update將立即觸發重繪。
The paint event of course is where all the drawing of your form occurs. Note there is only one pending Paint event, if you call Invalidate 3 times, you will still only receive one Paint event.
Paint: 無處不在。如果你調用3次Invalidate,但是系統將只觸發一次Paint事件。
Most of the time Invalidate is sufficient, and advisable as you can do a bunch of invalidations (either explicit or implicit) and then let the control repaint itself when the app is idle. It is advisable to use Update or Refresh when you want the control to immediately repaint because the app will not be idle for a user-noticable period of time.
大多數時候Invalidate已經足夠了,當系統要集中進行大量的刷新重繪時,建議使用Invalidate,因為這樣系統最終只進行一次刷新,提高了系統性能。如果你想立即執行刷新的時候,建議使用Refresh方法。