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) 则不能。(*现在还不知道有什么具体例子能够验证这一点)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值