C#winform的窗体自适应

566 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

在习惯了写固定大小的窗体之后总是会遇到界面显示不开的问题,在自己的电脑上运行的好好的,一跑到人家电脑上就动不动少一块显示不开。为此我可是煞费苦心,当初年少无知的我可是快要走遍互联网的大街小巷,腿都快累断了。为啥实现都那么复杂哩? 看了好多文章其实现原理几乎都是窗体打开时使用递归遍历所有控件,然后一个一个调尺寸,调位置。天哪,头都大了,就为了那么一个小小的功能给本来就臃肿的项目白白增加了一个类来实现,显得就更臃肿了。况且速度好像也不快 为此,在一次机缘巧合的情况下,让我偶然发现了两个控件-tableLayoutPanel和flowLayoutPanel。 前者是列表布局,而后者是流布局。 我实现的窗体自适应就是通过前者——列表布局实现的,话不多说,上图!

image.png

  • 首先拖一个tablelayoutpanel到窗体上

image.png

  • 设置属性docker为fill

image.png

  • 编辑行列百分比

image.png

  • 然后就可以像列表中拖其他控件啦,这时候拖到上面的控件会出现行列坐标和跨度几个属性,我这里让控件在第2行,第1列的位置,行列跨度都是2。需要注意的是同样要设置Dock属性为Fill,这样才可以填满单元格。

image.png

综上就可以实现窗体根据不同的显示分辨率,实现窗体自适应。