`

WinForm 中 Control.SuspendLayout, Control.ResumeLayout, PerformLayout 之间的关系

阅读更多

一般情况:

在VS视图模式下设计窗体对象后,其 InitializeComponent 方法体一般如下:

 

private void InitializeComponent(){
    // 创建各控件实例

    this.SuspendLayout();

    // 设置各控件具体属性

    this.ResumeLayout(false);
    this.PerformLayout();
}

 

 

官方解释:

Control.SuspendLayout

临时挂起控件的布局逻辑。

 

Control.ResumeLayout

恢复正常的布局逻辑。

Control.ResumeLayout(Boolean)

恢复正常的布局逻辑,可以选择强制对挂起的布局请求立即进行布局。

 

Control.PerformLayout

强制控件将布局逻辑应用于其所有子控件

 

疑问:

既然 Control.ResumeLayout(true) 可以达到强制布局的效果,为何不用这一句替代 ResumeLayout(false) 和 PerformLayout() 的组合?

 

答:

根据网上各种解释和自己反编译 System.Windows.dll 后得出的较靠谱的答案:

貌似和属性 ‘Anchor’有关,ResumeLayout(false) 会更改部分子控件的‘Anchor’属性,而ResumeLayout(true) 则不能。(*现在还不知道有什么具体例子能够验证这一点)

分享到:
评论

相关推荐

    Devexpress Winform中文帮助.chm

    Devexpress Winform中文帮助.chm

    Winform+StackExchange.Redis开发的简单的Redis工具 仅包含读取、删除、写入功能,十分简洁

    Winform+StackExchange.Redis开发的简单的Redis工具。 仅包含读取、删除、写入功能,十分简洁Winform+StackExchange.Redis开发的简单的Redis工具。 仅包含读取、删除、写入功能,十分简洁Winform+StackExchange....

    html嵌入winform(xilium.CefGlue)

    vs2012写的一个小demo,xilium.CefGlue.3.2272.2035的使用,html嵌入winform替代vs自带控件webBrowser,内容非常简单,没有相互交互的代码,交互功能网上很多,主要是提交包含可用的dll等,注意下载,亲测可用。

    Devexpress Winform中文文档.chm

    它包含了产品 API 的详细说明,并且提供了在现实应用程序中使用这些产品的大量按步操作的示例、屏幕截图和源码(C# 和 Visual Basic)。DevExpress开发中文帮助手册,常用Dev资源、用法、说明,帮助新手快速查找Dev...

    200个经典C#WinForm实例源码.rar

    C# WinForm是.NET Framework中的一个组件,它提供了丰富的控件库和事件驱动的编程模型,用于构建用户界面。C#语言的简洁性和强大的功能使得WinForm开发变得高效且易于理解。每个WinForm应用程序的核心是Form类,它是...

    Sheng.Winform.Controls.Controller-master_winform_

    这个名为"Sheng.Winform.Controls.Controller-master_winform_"的项目显然与Winform的控件操作和MVVM(Model-View-ViewModel)设计模式有关。下面我们将详细探讨这些关键知识点。 1. **Windows Forms (Winform)**:...

    c# winform usercontrol用户控件传值

    在C# WinForm应用开发中,用户控件(UserControl)是一种自定义控件,它允许开发者组合多个标准控件并作为一个单一的组件使用。在实际项目中,我们经常需要在窗体(Form)和用户控件之间传递数据,以便实现更复杂的...

    winform生成二维码.rar

    在本文中,我们将深入探讨如何在Windows Forms(WinForm)应用程序中生成二维码(QR code)。WinForm是.NET Framework提供的一种用于构建桌面应用的用户界面工具,而二维码则是一种广泛使用的条形码形式,用于存储...

    C#Winform图标素材.rar

    在C# WinForm应用开发中,图标素材起着至关重要的作用。它们不仅为应用程序提供视觉吸引力,还能帮助用户快速识别和理解各个控件的功能。"C#Winform图标素材.rar"是一个包含各种图标资源的压缩包,专为C# WinForm...

    WinForm高级编程.ppt

    WinForm高级编程.ppt

    DevExpress_WinForm中文教程.zip

    1. **DevExpress WinForm控件介绍**:了解DevExpress WinForm控件库中的各种控件,包括GridControl(数据网格)、ChartControl(图表)、 RibbonControl( Ribbon界面)、BarManager(工具栏管理器)等,并理解它们...

    Devexpress Winform中文文档.rar

    Devexpress Winform中文参考手册

    WPF和WinForm相互打开.zip

    为了使WPF和WinForm之间能进行数据传递和事件处理,我们可以利用`System.Windows.Forms.Control.Invoke`方法来同步更新WinForm中的控件,以及在WPF中使用`Dispatcher.Invoke`更新WPF元素。同时,可以定义委托和事件...

    C# winform缺失 libtensorflow.dll

    C# winform缺失 libtensorflow.dll,c# 无法加载DLL“###.dll”,: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

    winform抽屉菜单.zip

    使用CSS样式(通过System.Windows.Forms.Control.Style属性)来调整菜单的外观,包括颜色、字体等。 3. **动画效果**:实现菜单滑入滑出的动画。这可以通过调整控件的位置和透明度来实现,可以使用Timer控件或者...

    winform-Executable.zip

    自定义控件**:DrawingView组件本质上是一个自定义的Windows Forms控件,继承自System.Windows.Forms.Control类,通过重写OnPaint方法来实现绘图逻辑。 **3. 图形变换**:缩放和平移涉及到图形的变换矩阵,通过...

    C#WEBform和WINform之间通信.doc

    ### C#中WEBform与WINform之间的通信方法 #### WEBform与WINform简介 在.NET框架下,开发人员经常需要处理不同类型的用户界面,其中包括基于Web的应用程序(WEBform)和桌面应用程序(WINform)。这两种形式的应用...

    C# Winform多点触摸.zip

    接下来,我们需要使用`System.Windows.Forms.Control`类中的`Touch`属性来获取触摸输入。`Touch`属性提供了一个`TouchPointCollection`,它包含了所有当前的触摸点信息。我们可以在`Paint`事件处理器中检查这个集合...

Global site tag (gtag.js) - Google Analytics