我正在使用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