【发布时间】:2017-03-04 04:57:05
【问题描述】:
如何将c#中所有TableLayoutPanel行的默认高度设置为16px?
通常我会这样做:
for (int i = 0; i < amount_of_rows; i++)
{
panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 16));
}
但就我而言,我有 8 列和未知数量的行。在添加所有控件之后,而不是之前知道行上的数量。
这是我的代码:
TableLayoutPanel panel = new TableLayoutPanel
{
BackColor = SystemColors.Control,
CellBorderStyle = TableLayoutPanelCellBorderStyle.Single,
AutoScroll = true,
Width = 500,
Location = new Point(-1, -1),
ColumnCount = 8
};
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
int amountOfRows = 0;
for (...)
{
// a lot of code which populates panel with generated controls and counts amountOfRows
}
panel.RowCount = amountOfRows;
Controls.Add(panel);
这样的代码会创建高度为 24px 的行。
在表格填充后将 ColumnStyles 添加到表格中:
for (int i = 0; i < amountOfRows ; i++)
{
panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 16));
}
有效,但它使最后一行非常大。
编辑:包括添加控件的示例代码:
TableLayoutPanel panel = new TableLayoutPanel
{
BackColor = SystemColors.Control,
CellBorderStyle = TableLayoutPanelCellBorderStyle.Single,
AutoScroll = true,
Width = 500,
Location = new Point(-1, -1),
ColumnCount = 8,
Margin = new Padding(0),
Padding = new Padding(0)
};
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
for (int i = 0; i < 10; i++) // lets assume we don't know it will be added 10x
{
CheckBox exchangeEnabled = new CheckBox
{
Margin = new Padding(0),
Padding = new Padding(0),
Dock = DockStyle.Fill,
CheckAlign = ContentAlignment.MiddleCenter
};
panel.Controls.Add(exchangeEnabled, 0, i);
}
Controls.Add(panel);
【问题讨论】:
标签: c# height cell tablelayoutpanel