【C#】用组件的Anchor属性解决最大化组件的缩放问题

如果不对组件进行任何设置,同时也不禁用C#窗体的最大化按钮,设置Form1不可调整,在Form1最大化之后,默认是如下图的效果:

这显然不符合大多数的审美,其实只要全选所有组件,不包含窗体,设置其所有组件的Anchor属性就好。

将Top,Left改成Top,Left,Right就好,

就是点一点下图的右端的长方形就好。


这样设置的话得到的效果如下图:


其实这已经足够了,如果还要进一步设置,则对Form1添加Resize事件,在于里面再对组件的位置进行调整。

我找了很久,都还有统一遍历并调整所有组件位置、大小的方法,比如Button支持Height属性调整大小,combobox与TextBox却要利用Button1不支持的调整Font的大小,来调整其中的大小。


同时,在Form1的Resize事件用foreach (Control ctl in this.Controls)遍历组件的时候,得到的控件顺序是逆转的,而且得到的只是一个Form1子控件的数组,比如如果form1下有groupbox下如果还有button1,其不在Form1.Controls这个控件数组中,因此只用Anchor既快捷又迅速,又明了。

Anchor是如下图的一个属性,不同的窗口大小又不同的对齐。


有的人可能疑惑,上述的例子为何不对所有组件的Anchor设置为top,left.right.bottom四个方位呢?那是因为四个方式都有Anchor的话,C#窗体会对所有组件的大小进行拉伸,但是textbox,combobox这些组件,并不支持高度拉伸。

窗体的缩放,我个人觉得与网页组件的布置一样,如果你难以在所有不同尺寸浏览器用百分比大小进行布局,那就让它居中吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值