很久没写非常代码化的文章了,代码倒是每天都在写,但是前几天看到一个朋友在用一个“只有一个文本框”的窗体来写“让控件随窗体大小改变而改变”,他用的方法是在窗体大小变化后,重新计算根据窗体的新Size计算这一个控件的Size。所以我给他评论是:单个控件压根不需要这么做,而多个控件这么做又没有意义,所以最好的办法就是参考CSS的Grid布局方法自定义一套基于WIniform的Grid布局。
Winform的控件都有一个Anchor属性。只不过如果使用Anchor的话,对于一个控件确实是可以的,但是多个控件行列布局的时候用Anchor就不行了,放大缩小后完全乱套。比如我布局得好好的一个页面:
用Anchor布局得很好的页面
用Anchor布局的话,上下左右控件的位置倒是可以随窗口大小变化,但是大小却不会变。但是对于中间的空件,那么布局后很可能就是乱七八糟的了。
中间的控件Anchor布局后显然很乱,不好调整
所以刚好周末,就花了点时间描述一下我所说的参考CSS的Grid布局方法来实现一个Winform下的Grid布局,思路如下:
- 模拟CSS的Grid布局,加一个GridArea的类,用于存储grid-row-start / grid-column-start / grid-row-end / grid-column-end(想简单的话用一个Rectangle来替代也行);
- 在窗体的初始化方法中,完成控件初始化后(InitializeComponent),计算

文章介绍了如何在Winform应用中创建一个类似CSSGrid的布局系统,以解决使用Anchor属性进行多控件布局时的问题。作者提出创建一个GridArea类来存储控件的网格位置信息,在窗体初始化和调整大小时重新计算并调整控件的位置和大小。这种方法使得控件能更好地适应窗体的变化,保持布局整洁有序。
最低0.47元/天 解锁文章
596

被折叠的 条评论
为什么被折叠?



