Winform程序中,Invalidate、Update和Refresh方法介绍

导读:本篇文章讲解 Winform程序中,Invalidate、Update和Refresh方法介绍,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Control.Refresh 方法
强制控件使其工作区无效并立即重绘自己和任何子控件。
反编译源码:

public virtual void Refresh()
{
    this.Invalidate(true);
    this.Update();
}
Control.Invalidate 方法
使控件的特定区域无效并向控件发送绘制消息。
     名称    说明
Invalidate()    使控件的整个图面无效并导致重绘控件。
Invalidate(Boolean)    使控件的特定区域无效并向控件发送绘制消息。还可以使分配给该控件的子控件无效。
Invalidate(Rectangle)    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。
Invalidate(Region)    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。
Invalidate(Rectangle, Boolean)    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。还可以使分配给该控件的子控件无效。
Invalidate(Region, Boolean)    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。还可以使分配给该控件的子控件无效。
 备注

         调用 Invalidate 方法并不强制同步绘制;若要强制同步绘制,请在调用 Invalidate 方法之后调用 Update 方法。在不带参数的情况下调用此方法时,会将整个工作区添加到更新区域。

 

Control.Update 方法
使控件重绘其工作区内的无效区域。

备注

         执行所有对绘制的挂起请求。

         有两种重新绘制窗体及其内容的方法:

您可以将 Invalidate 方法的重载之一与 Update 方法一起使用。

可以调用 Refresh 方法,此方法强制控件重新绘制其自身及其所有子级。这等效于将 Invalidate 方法设置为 true 并将该方法与 Update 一起使用。

Invalidate 方法控制绘制或重新绘制的内容。Update 方法控制发生绘制或重新绘制的时间。如果将 Invalidate 和 Update 方法一起使用,而不是调用 Refresh,则重新绘制的内容取决于您使用的 Invalidate 的重载。Update 方法仅仅是强制立即绘制控件,而 Invalidate 方法则控制当您调用 Update 方法时所绘制的内容。

 

示例代码:

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = “XXX”;
 
    textBox1.Invalidate();
 
    //textBox1.Update();
    //textBox1.Refresh();
 
    Thread.Sleep(3000);
    textBox1.Text = “YYY”;
}
        由于Thread.Sleep这一句的存在,虽然textBox1执行了Invalidate,但是并没有显示”XXX”,而是在3秒钟之后直接显示了”YYY”;

        如果去除Update或者Refresh的注释,才可以实现先显示”XXX”,3秒钟之后再显示”YYY”。

        Control.Update 方法:使控件重绘其工作区内的无效区域。
        Control.Refresh 方法:强制控件使其工作区无效并立即重绘自己和任何子控件,等效于将 Invalidate 方法设置为 true 并将该方法与 Update 一起使用。

那么既然有了Update,为何还要存在Invalidate呢?
        原因是Invalidate有重载的版本例如:Invalidate(Rectangle, Boolean)   使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。还可以使分配给该控件的子控件无效。

        其实Invalidate 方法控制绘制或重新绘制的内容。Update 方法才是控制发生绘制或重新绘制的时间(即执行重绘制命名)。

 

此文为转载,作为学习笔记!
原文:https://blog.csdn.net/zzs0618/article/details/6604853 
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/51903.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!