在做Windows Forms開發的時候,免不了需要手動刷新窗口,以重繪所需更改的控件,或其它什麼的。當出現這類需求時,你有三個選擇,使用Invalidate,Update或者Refresh方法。
Invalidate有六個重載方法:
public void Invalidate(Region region)
public void Invalidate(Region region, bool invalidateChildren)
public void Invalidate()
public void Invalidate(bool invalidateChildren)
public void Invalidate(Rectangle rc)
public void Invalidate(Rectangle rc, bool invalidateChildren)
一般而言,public void Invalidate()方法被使用的機會比較多。而在此方法內部其實又調了public void Invalidate(bool invalidateChildren)方法,並將參數設為了false。
1 public void Invalidate()
2 {
3 this.Invalidate(false);
4 }
public void Invalidate(bool invalidateChildren)方法中參數值的true與false分別代表了是否需要在重繪的時候,同時重繪所有的子窗體。
public void Invalidate(bool invalidateChildren) { if (this.IsHandleCreated) { if (invalidateChildren) { SafeNativeMethods.RedrawWindow(new HandleRef(this.window, this.Handle), null, NativeMethods.NullHandleRef, 133); } else { using (new Control.MultithreadSafeCallScope()) { SafeNativeMethods.InvalidateRect(new HandleRef(this.window, this.Handle), null, (this.controlStyle & ControlStyles.Opaque) != ControlStyles.Opaque); } } this.NotifyInvalidate(this.ClientRectangle); } }
本欄目