程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Invalidate,Update與Refresh有什麼區別

Invalidate,Update與Refresh有什麼區別

編輯:關於.NET

在做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);  
    }  
}

本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved