`

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 方法才是控制发生绘制或重新绘制的时间(即执行重绘制命名).

分享到:
评论

相关推荐

    InvalidateRect,Invalidate,UpdateWindow区别

    本文将详细介绍它们的区别和使用场景。 UpdateData UpdateData 是一个重要的函数,它用于在变量和控件之间同步数据。当您使用 ClassWizard 建立了控件和变量之间的联系后, UpdateData 就扮演着关键角色。它有两个...

    invalidate

    "invalidate()方法在Android中的应用和实现" invalidate()方法是Android中的一种常用方法,主要用于刷新View的界面。当View的显示状态发生改变时,需要调用invalidate()方法来重新绘制界面。invalidate()方法的调用...

    分析invalidate流程例子

    在Android开发中,`Invalidate`是一个至关重要的概念,它涉及到UI更新机制,与用户界面的刷新和重绘紧密相关。当我们对一个View调用`invalidate()`方法时,实际上是触发了该View的重新绘制过程。这个过程涉及到多个...

    Invalidate() 的用法小解

    ### Invalidate() 函数详解 #### 一、函数简介 `Invalidate()` 是Windows编程中一个非常重要的函数,主要用于控制窗口的重绘行为。该函数可以让应用程序通知系统某个窗口或者其部分区域需要重新绘制。这对于图形...

    C#绘制坐标轴 C#绘制坐标轴 C#绘制坐标轴

    这涉及到定时更新图形,使用`Invalidate`或`Update`方法强制重绘,并根据新的数据更新线条的位置。 总的来说,C#提供了强大的图形绘制能力,无论是简单的静态坐标轴还是复杂的动态曲线,都可以通过合理的API调用来...

    Invalidate()函数[参考].pdf

    Invalidate() 和 InvalidateRect() 的主要区别在于,Invalidate() 使整个窗口客户区无效,而 InvalidateRect() 只是增加重绘区域。InvalidateRect() 可以指定要刷新的区域,而 Invalidate() 则不能。 UpdateWindow...

    Invalidate.doc

    ### Invalidate与UpdateWindow的区别 #### 一、Invalidate函数详解 **定义与作用:** `Invalidate`函数用于标记窗口的客户区为无效状态,即表明这部分区域需要重新绘制。通常,当窗口的一部分内容发生变化或者被...

    CSharp 4.0 .Net Framework V4.0 Control.Invalidate 方法

    在C#编程中,`Control.Invalidate()`方法是.NET Framework 4.0中一个非常重要的图形界面编程元素,主要用于更新控件的显示内容。当控件的状态或数据发生变化,需要刷新其显示时,就会调用这个方法。这个方法使得控件...

    曲线_c#实时曲线_C#曲线数据_C#曲线控件_C#曲线显示_实时

    一种常见方法是使用定时器(如`System.Timers.Timer`或`System.Windows.Forms.Timer`),在每隔一定时间间隔后触发事件,更新曲线数据并调用控件的`Invalidate()`或`Update()`方法来强制重绘界面。这样,随着新数据...

    C# listview 防止闪烁实例

    在C#编程中,ListView控件是Windows Forms中常用的一个组件,用于显示一系列的数据项,通常以列表形式呈现。然而,在动态加载大量数据或者频繁更新ListView时,可能会出现闪烁现象,这不仅影响用户体验,也可能对...

    c#自定义透明按钮控件

    在C#编程中,自定义控件是一种常见的需求,它允许开发者根据项目需求创建具有特定功能或视觉效果的用户界面元素。"c#自定义透明按钮控件"就是这样一个实例,它展示了如何利用C#语言和.NET Framework或.NET Core来...

    Android中View绘制流程以及invalidate()

    `invalidate()`方法是View类中的一个重要成员,用于触发View的重绘操作。本篇文章将深入探讨Android中View的绘制流程以及`invalidate()`方法的工作原理。 首先,我们需要了解Android视图的生命周期,它包括测量...

    C#自定义开关按钮控件,c#自定义控件方法,C#

    在C#编程中,自定义控件是一种常见的需求,它允许开发者根据项目需求创建具有特定功能或视觉效果的用户界面元素。本篇将深入探讨如何在C#中自定义一个开关按钮控件,并通过实际的代码示例进行解析。 首先,我们需要...

    C# 实现刻度尺

    在C#中实现一个刻度尺的项目,可以涉及到图形用户界面(GUI)设计、坐标系统转换、单位换算以及自定义控件等多个知识点。以下将详细解释这些内容。 1. **图形用户界面(GUI)设计**:在VS2013中,我们可以使用...

    c#做的一个石英时钟

    可以使用System.Timers.Timer类,设置合适的Interval(比如1秒),当Timer的Elapsed事件触发时,更新时针、分针和秒针的位置,并调用Control.Invalidate()方法强制重绘控件。 6. **格式化时间显示** 如果你想在...

    C#实现雷达扫描显示

    通过与定时器事件关联,我们可以定期更新雷达扫描的角度和探测到的目标,并使用`Invalidate`方法强制重绘控件,从而实现动态效果。同时,考虑到用户体验,还需要考虑如何平滑地过渡动画,避免画面闪烁。 此外,用户...

    vs2008 c#电池容量控件

    当这个属性改变时,触发控件的Invalidate方法,使得控件重新绘制自身,更新电池的显示状态。此外,还可以考虑添加一个事件,比如BatteryLevelChanged,供其他部分的代码响应电池容量的变化。 在控件中,可以实现...

    c# 实现动态柱状图

    在.NET Framework 4.0环境下,使用C#编程语言实现动态柱状图是一种常见的数据可视化需求。柱状图能够清晰地展示数据之间的比较,对于数据分析和界面展示具有重要作用。本文将详细探讨如何利用C#和Chart控件来创建一...

    C#实现在控件上画直线

    在C#编程中,WinForms是一个用于创建桌面应用程序的强大框架。有时我们需要在应用程序的界面中进行图形绘制,比如画直线,这在创建自定义控件或实现特定视觉效果时非常有用。本文将深入探讨如何使用C#实现在WinForm...

Global site tag (gtag.js) - Google Analytics