我正在使用TableLayoutPanel将客户区分割成3行(只有1列)。顶部和底部的行被设计成具有固定的高度;它们将包含一个页眉和一个页脚,最初每个页面都包含一个包含静态文本的子标签控件(仅用于开始)。中间行应该动态调整大小以填充剩余区域。这个中间窗格最终将包含一个列表视图。我有一个管理器类,它作为一个参数被管理的面板(ExplorerTableLayoutPanel)对象:TableLayoutPanel:无法正确获取内容行的大小
public class ExplorerTableLayoutPanelManager
{
public ExplorerTableLayoutPanelManager(ExplorerTableLayoutPanel panel)
{
LayoutPanel = panel;
}
有3个方法是,在表的布局创建各3列:
private void AddHeaderRow()
{
const int headerHeight = 30;
LayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, headerHeight));
Label label = new Label();
label.BackColor = Color.AliceBlue;
label.BorderStyle = BorderStyle.None;
label.ForeColor = Color.LightGray;
label.TextAlign = ContentAlignment.MiddleRight;
label.Text = "Header Banner";
label.Dock = DockStyle.Fill;
float size = label.Font.SizeInPoints;
label.Font = new Font(label.Font.Name, size * 2);
const int column = 0, row = 0;
LayoutPanel.Controls.Add(label, column, row);
}
private void AddBodyRow()
{
LayoutPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
Label label = new Label();
label.BorderStyle = BorderStyle.FixedSingle;
label.ForeColor = Color.LightGray;
label.TextAlign = ContentAlignment.MiddleCenter;
label.Text = "Content Under construction ...";
label.Dock = DockStyle.Fill;
float size = label.Font.SizeInPoints;
label.Font = new Font(label.Font.Name, size * 2);
const int column = 0, row = 1;
LayoutPanel.Controls.Add(label, column, row);
}
private void AddFooterRoow()
{
const int footerHeight = 30;
LayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, footerHeight));
Label label = new Label();
label.BackColor = Color.AliceBlue;
label.BorderStyle = BorderStyle.None;
label.ForeColor = Color.LightGray;
label.TextAlign = ContentAlignment.MiddleRight;
label.Text = "Footer Banner";
label.Dock = DockStyle.Fill;
float size = label.Font.SizeInPoints;
label.Font = new Font(label.Font.Name, size * 2);
const int column = 0, row = 2;
LayoutPanel.Controls.Add(label, column, row);
}
的我所看到的问题是最后一行占据了我所要求的固定行高度30.这部分是正确的。然而,第一排和第二排在他们之间平分剩余的空间,这不是我想要的。正如你所看到的,我已经明确地将第一行的行高设置为30,其方式与最后一行完全相同,但这似乎不起作用。第二行(中)的RowStyle大小设置为SizeType.AutoSize,我的意思是用尽剩余空间,所以不要明确设置大小。我可能是错的,但我不确定。
它接缝要模拟“码头”布局属性与表。 – 2015-12-15 08:34:14