我有一个自动滚动的TableLayoutPanel,我正在动态添加行。我希望每行的高度为TableLayoutPanel可见区域的1/3,即面板的原始高度,然后在添加第4个面板并自动滚动开始时展开。我可以计算手动到达行的高度并将其设置为绝对高度,但可以调整TableLayoutPanel的大小。在那种情况下,我可以处理调整大小的事件并重新计算每行的绝对高度,但我想知道是否有更好的方法。有没有办法将行高指定为可见面板区域的百分比,还是应该进行手动计算,绝对高度路径?
答案 0 :(得分:2)
TableLayoutPanel.RowStyle.Percent
行高被解释为表高度的百分比
如果你有一个包含2行的表格,每个表格占50%的面板 - 并且希望添加第3行,将所有行调整为33%:
tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles[0].Height = 33F;
this.tableLayoutPanel1.RowStyles[1].Height = 33F;
this.tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 33F));
答案 1 :(得分:1)
我最终在自上而下的FlowLayoutPanel中实现了我需要的东西,锚定了Top,Down,Left和Right,以便使用表单调整大小。第一个子面板添加到FlowLayoutPanel,并指定一个略小于FLP宽度的宽度。每个后续子面板都有一个Dock样式的填充,因此其宽度自动匹配第一个面板。每个面板都分配了FLP.Height / 3的高度,我有一个FLP调整大小事件的处理程序,以根据需要重新计算子面板的高度。
感谢所有评论和回答的人。我正在推荐你的答案,因为它们对别人有帮助,只是没有解决我的特定问题。