C# winform中如何支持多个控件都随form自动调整大小,但距离form的pading不同
本帖最后由 getstr88 于 2022-6-12 22:33 编辑我一直用Unity基于C#开发,unity中锚点很好用,可以自由设置一个控件的上下左右分别距离另一个控件的距离,从而一旦另一个控件大小改变。被设置锚点的控件重新计算自身大小并调整,使得重新满足锚点设定
我想实现,如下图。上面都是panel,其水平大小,都随着form的缩放而改变。但是它俩距离form左右边距不同
如果它俩dock都设为fill,那么调整form的pading,都只能满足1个尺寸,没法让他俩距离form不同
是不是winform本身没有unity那么灵活的设置,我为了实现上面的只能自己监听size变化事件,然后自己计算panel的位置和大小然后赋@? 可以使用TableLayoutPanel,把窗口划分成虚拟单元格,行宽列宽可设置百分比或固定值,窗口resize时会自动调整大小,把控件绑定到对应的单元格,可跨行和列绑定,最好不要在其上再使用过多panel,padding性能会下降 没有看到图啊,Winform 的窗体内控件有Anchor属性可以锚定父控件的内边缘。如果想锚定其他控件,你大概只能求助代码或布局控件,比如一楼的TableLayoutPanel或FlowLayoutPanel,都会根据设置完成一定的布局。 WPF了解下。 RURUKnight 发表于 2022-6-12 18:29
没有看到图啊,Winform 的窗体内控件有Anchor属性可以锚定父控件的内边缘。如果想锚定其他控件,你大概只能 ...
不好意思,补上了图 skypaladin 发表于 2022-6-12 20:23
WPF了解下。
客户老项目上开发,这个不能自己定。要是可以,还WPF干啥,直接QT了 ziyulx 发表于 2022-6-12 10:55
可以使用TableLayoutPanel,把窗口划分成虚拟单元格,行宽列宽可设置百分比或固定值,窗口resize时会自动调 ...
好的,我研究下 ziyulx 发表于 2022-6-12 10:55
可以使用TableLayoutPanel,把窗口划分成虚拟单元格,行宽列宽可设置百分比或固定值,窗口resize时会自动调 ...
我补上图了,好像table layut也没法满足我设置间距的功能。我没找到每个cell能设置自己的pading getstr88 发表于 2022-6-13 17:17
我补上图了,好像table layut也没法满足我设置间距的功能。我没找到每个cell能设置自己的pading
把控件放到TableLayoutPanel后,会多下面几个属性,用于设置控件所在单元格和跨几个位置,研究一下吧
Column:控件所在的列
ColumnSpan:列的跨度
Row:控件所在的行
RowSpan:列的跨度 ziyulx 发表于 2022-6-14 08:16
把控件放到TableLayoutPanel后,会多下面几个属性,用于设置控件所在单元格和跨几个位置,研究一下吧
Co ...
我不是要跨,你看下我发的图就知道和你说的不是一个功能
页:
[1]
2