吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1849|回复: 16
收起左侧

[求助] C# winform中如何支持多个控件都随form自动调整大小,但距离form的pading不同

[复制链接]
getstr88 发表于 2022-6-12 10:39
本帖最后由 getstr88 于 2022-6-12 22:33 编辑

我一直用Unity基于C#开发,unity中锚点很好用,可以自由设置一个控件的上下左右分别距离另一个控件的距离,从而一旦另一个控件大小改变。被设置锚点的控件重新计算自身大小并调整,使得重新满足锚点设定


我想实现,如下图。上面都是panel,其水平大小,都随着form的缩放而改变。但是它俩距离form左右边距不同
无标题.png

如果它俩dock都设为fill,那么调整form的pading,都只能满足1个尺寸,没法让他俩距离form不同


是不是winform本身没有unity那么灵活的设置,我为了实现上面的只能自己监听size变化事件,然后自己计算panel的位置和大小然后赋@?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ziyulx 发表于 2022-6-12 10:55
可以使用TableLayoutPanel,把窗口划分成虚拟单元格,行宽列宽可设置百分比或固定值,窗口resize时会自动调整大小,把控件绑定到对应的单元格,可跨行和列绑定,最好不要在其上再使用过多panel,padding性能会下降
RURUKnight 发表于 2022-6-12 18:29
没有看到图啊,Winform 的窗体内控件有Anchor属性可以锚定父控件的内边缘。如果想锚定其他控件,你大概只能求助代码或布局控件,比如一楼的TableLayoutPanel或FlowLayoutPanel,都会根据设置完成一定的布局。
skypaladin 发表于 2022-6-12 20:23
 楼主| getstr88 发表于 2022-6-12 22:33
RURUKnight 发表于 2022-6-12 18:29
没有看到图啊,Winform 的窗体内控件有Anchor属性可以锚定父控件的内边缘。如果想锚定其他控件,你大概只能 ...

不好意思,补上了图
 楼主| getstr88 发表于 2022-6-12 22:34

客户老项目上开发,这个不能自己定。要是可以,还WPF干啥,直接QT了
 楼主| getstr88 发表于 2022-6-12 22:35
ziyulx 发表于 2022-6-12 10:55
可以使用TableLayoutPanel,把窗口划分成虚拟单元格,行宽列宽可设置百分比或固定值,窗口resize时会自动调 ...

好的,我研究下
 楼主| getstr88 发表于 2022-6-13 17:17
ziyulx 发表于 2022-6-12 10:55
可以使用TableLayoutPanel,把窗口划分成虚拟单元格,行宽列宽可设置百分比或固定值,窗口resize时会自动调 ...

我补上图了,好像table layut也没法满足我设置间距的功能。我没找到每个cell能设置自己的pading
ziyulx 发表于 2022-6-14 08:16
getstr88 发表于 2022-6-13 17:17
我补上图了,好像table layut也没法满足我设置间距的功能。我没找到每个cell能设置自己的pading

把控件放到TableLayoutPanel后,会多下面几个属性,用于设置控件所在单元格和跨几个位置,研究一下吧
Column:控件所在的列
ColumnSpan:列的跨度
Row:控件所在的行
RowSpan:列的跨度
 楼主| getstr88 发表于 2022-6-14 08:35
ziyulx 发表于 2022-6-14 08:16
把控件放到TableLayoutPanel后,会多下面几个属性,用于设置控件所在单元格和跨几个位置,研究一下吧
Co ...

我不是要跨,你看下我发的图就知道和你说的不是一个功能
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-12 21:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表