WinForm-SuspendLayout、ResumeLayout、PerformLayou——转载
WinForm-SuspendLayout、ResumeLayout、PerformLayou——转载
问题
通常我们在设置子控件的一些与外观、布局有关的属性时,比如Size、Location、Anchor或Dock等,会激发子控件的 Layout事件,并可能会引起窗口重绘。当子控件较多时,如果频繁设置上述属性(例如在窗体的初始化代码中),多个子控件的Layout事件会引起窗口重绘效率问题,比如闪烁。特别地,通过动态加载插件生成的UI对象特别多时,闪烁的情况就特别严重。那么怎么解决这个问题呢?
解决
这时,通过使用控件的SuspendLayout方法,可以将控件的布局暂时挂起,其后的代码中将会把子控件的Layout事件暂时挂起,只是把相应属性的值设置为新值,并不激发Layout事件,待调用ResumeLayout方法后,再一起使子控件的Layout事件生效。当需要立即执行布局事件时,可以直接调用PerformLayout方法。
Q&A
1.什么时候会触发Control.Layout事件?
(1)当控件本身的大小(Size)改变时会触发本控件的Layout事件
(2)当其子控件的位置(Location)改变时会触发它的Layout事件。
(3)添加或删除子控件也会引起它的Layout事件。
(4)发生其他可影响控件布局的变化时会引起它的Layout事件。
2.SuspendLayout方法作何用?
在添加或移除子控件,控件的边界改变,以及在发生其他可影响控件布局的变化时,会发生 Layout 事件。可以使用SuspendLayout挂起布局,可以在控件上执行多个操作,而无需为每次更改执行一次布局操作。也就是说,有了这个语句之后,紧接着下面的添加删除子控件,或者改变子控件的大小、位置及改变它自身的位置的这些操作,都不在引发Layout事件了。
3. ResumeLayout方法作何用?
通过ResumeLayout方法可以取消挂起的布局。以后布局改变的时候就会引发Layout事件了。
4. PerformLayout方法作何用?
ResumeLayout方法可以取消挂起的布局,使以后的布局均有效,但是并不能保证布局的立即执行。如果要使布局立即执行(即立即触发Layout事件),可以调用PerformLayout方法强制布局,强制控件将布局逻辑应用于自身及其子控件。
C#窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.panel1.SuspendLayout();
this.SuspendLayout();
......//这里设置控件属性
......//这里设置控件属性
this.panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
从代码中可以看出,窗体设计器自动生成代码时也是在大规模改变控件属性(这些属性会决定控件布局)的时候使用到了控件的PerformLayout与ResumeLayout方法来提高重绘效率,减少闪烁。
WinForm-SuspendLayout、ResumeLayout、PerformLayou——转载的更多相关文章
- C# winform安装部署(转载)
c# winform 程序打包部署 核心总结: 1.建议在完成的要打包的项目外,另建解决方案建立安装部署项目(而不是在同一个解决方案内新建),在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目 ...
- ASP.NET程序也能像WinForm程序一样运行[转载]
阅读目录 开始 操作方式 支持的ASP.NET程序类别 它也是个HTTP服务器 支持远程机器访问 不受限于Windows防火墙 尊重每个人的操作习惯 内置多标签浏览器支持 启动参数及配置文件 支持 . ...
- 转载:WinForm中播放声音的三种方法
转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...
- WinForm轻松实现自定义分页 (转载)
转载至http://xuzhihong1987.blog.163.com/blog/static/267315872011315114240140/ 以前都是做web开发,最近接触了下WinForm, ...
- c#winform使用WebBrowser 大全[超长文转载]
1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源.必须在附加事件的同一线程上调用 ...
- Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼
Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控 ...
- 【转载】C# winform操作excel(打开、内嵌)
本文转载自静待"花落<C# winform操作excel(打开.内嵌)> 说明:显示的excel是利用模板创建的 using System;using System.Coll ...
- 【转载】Visual Studio中WinForm窗体程序如何切换.NET Framework版本
在C#语言的WinForm窗体程序中,有时候我们需要切换WinForm窗体程序项目的.NET Framework版本号,例如从.NET Framework 4.5版本切换到.NET Framework ...
- 【转载】Visual Studio2017如何设置打包发布的WinForm应用程序的版本号
在Visual Studio 2017集成开发工具中,打包发布Winform窗体应用程序的时候,支持设置此次打包发布的Winform窗体应用程序对应的版本号信息,并且支持一次设置后,后续的所有发布版本 ...
随机推荐
- iOS 使用 TestFlight 测试
TestFlight 已经并入 Itunes connect. 测试方法: 1. itunes connect 上创建应用 2. xcode 里 archive 应用并 submit 到 itunes ...
- “全栈2019”Java异常第九章:throws关键字详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- jzoj3717
#include<bits/stdc++.h> using namespace std; extern int main2(void) __asm__ ("main2" ...
- java使用memcached2--集群部署
一.集群安装 1.编译安装magent-0.5到/usr/local/下 # cd /usr/local # mkdir magent # cd magent/ # wget http://memag ...
- RHEL 7 下内存管理小记
RHEL 7 下内存管理小记 一.Overview 众所周知,在 Linux 操作系统中有三个目录非常有趣好玩. /dev /run /proc 一个个解释下,/dev 用于对特殊设备(BTW:特殊设 ...
- Hadoop完全分布式搭建
---记于2015年11月6日星期五 准备工作 软硬件环境 主机操作系统:处理器:i5,主频:3.2G,内存:8G,Windows64 虚拟机软件:VMware Workstation 10 虚拟操作 ...
- iOS 之新特性界面
1.什么事新特性界面? 新特性界面就是第一次下载程序出现的界面,他的用途是帮助用户快速了解这款APP,所有说还是很有必要学一下的. 2.如何实现新特性界面? 实现思路:从本质上看,新特性界面就是一个全 ...
- Linux文件索引节点相关概念
一. 概念 1. inode(index node)表中包含文件系统所有文件列表 一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括: 文件类型,权限,UID,GID 链接 ...
- 20190418 CentOS7实用技能综合:系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/RocketMQ/RabbitMQ编译安装 + ...各类常用生产环境软件的编译安装
系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/Roc ...
- linux 打包 压缩 解压缩
gzip gzip xxx文件 压缩文件xxx,后缀.gz 并且删除原来文件 gzip -tv xxx.gz 测试压缩文件压完整性 压缩当前文件夹所有文件: zip -r ./1.zip ./* -r ...