C# Invalidate() Update() Refresh()的區別

來源:互聯網
上載者:User

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 方法才是控制發生繪製或重新繪製的時間(即執行重繪製命名).

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.