1、原理说明
Percent和Absolute是两套独立体系,不能直接相加。
SizeType.Percent:是剩余可伸缩区域的百分比SizeType.Absolute:固定像素,先把这部分高度扣掉,剩下的高度再分给百分比行
mainPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 60F)); //行0 mainPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 40F)); //行1 mainPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F)); //行2 固定45像素逻辑:
- 总窗口高度,先预留45px给第2行按钮
- 剩下的高度,按
60% : 40%分给行0、行1>
60+40 =100,是剩余区域的百分百,不是整个窗口,比例定义本身语法没问题。
❗但是坑:行顺序!!
TableLayoutPanel行顺序从上往下:Row0,Row1,Row2
你代码:
Row0:公共区(图层)Percent60
Row1:动态参数 Percent40
Row2:底部按钮 Absolute45
✅顺序本身没问题,但动态参数消失最常见两个原因
①FlowLayoutPanel没有自动滚动+内部控件宽度计算溢出
②动态行Panel没有Dock填充,或者控件高度挤成0