【轉】C# Invalidate() Update() Refresh()的區別


Control.Invalidate方法:使控件的特定區域無效並向控件發送繪制消息。

通常情況下,用Invalidate()使區域無效就可觸發該控件的重畫了,但在一些條件下卻沒有觸發重畫.
例如:

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "888";

textBox1.Invalidate();

//textBox1.Update();
// textBox1.Refresh();

Thread.Sleep(5000);
textBox1.Text = "999";
}
這是由於Thread.Sleep(5000)這一句的存在,textBox1雖然Invalidate()了,但並沒有顯示"888",而是5秒后直接顯示999了.

得用textBox1.Update();或textBox1.Refresh();才行.

Control.Update 方法:使控件重繪其工作區內的無效區域。
Control.Refresh 方法:強制控件使其工作區無效並立即重繪自己和任何子控件;
等效於將 Invalidate 方法設置為 true 並將該方法與 Update 一起使用。

那么既然有了Update,為何還要存在Invalidate呢?
原因是Invalidate有重載的版本例如:Invalidate(Rectangle, Boolean) 使控件的指定區域無效(將其添加到控件的更新區域,下次繪制操作時將重新繪制更新區域),並向控件發送繪制消息。還可以使分配給該控件的子控件無效

其實Invalidate 方法控制繪制或重新繪制的內容。Update 方法才是控制發生繪制或重新繪制的時間(即執行重繪制命名).


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM