有什么不一样,可以说具体点么,我也感兴趣,还有用this.Invalidate() 这个之后,刷新的时候屏幕会闪,怎么让它不闪
解决方案 »
- 如何使用EnvDTE的IsFileOpen方法
- 串口发送,接收问题
- 关于产生随机数~~高手进来~
- C#能重载=号吗
- 你遍历文件夹没有?
- 求救:DataGrid绑定CheckBox后无法读取checkbox的checked值
- 读取数据问题
- 如何计算C#的代码量
- 怎么crystal report不能打印?急!!!!!
- 在组件里访问数据库,如何向调用该组件的应用程序返回错误信息,就像VB里Raise err.source,err.number,err.description?
- 我想把我家的机器做为WEB服务器,但我用的是ADSL上网没有固定IP地址,请问何解?
- 关于ContextMenu的问题,请大家帮忙。
Control.Invalidate(...),使用控件的一个区域无效,然后重绘这个无效区域
[C#]public void Invalidate();备注
调用 Invalidate 方法并不强制同步绘制;若要强制同步绘制,请在调用 Invalidate 方法之后调用 Update 方法。在不带参数的情况下调用此方法时,会将整个工作区添加到更新区域。
Update()是通知立刻重画,不用等消息排队!
在windows下面Invalidate是设置无效区域
而Update是相当于
如果(无效区域不为空)
{
则SendMessage(窗体句柄,WM_PAINT, ....)
// 表示立即进行重绘的操作
}而如果只是Invalidate了,那么程序会在相对空闲的时候再检查消息队列
里是否有WM_PAINT消息或是无效区域是否为空(此处的细节我也不太清楚),
然后再处理WM_PAINT消息,进行重绘的操作
所以如果要求及时的重绘,就得在Invalidate后接着调用Update
当然一般是没那个必要的了