如何以编程方式在TableLayoutPanel上应用列和行样式?

时间:2016-08-02 15:18:29

标签: c# winforms tablelayoutpanel

一开始,TableLayoutPanel只有一行而没有列。通过按下按钮,我希望使用 5行3列转换此面板。

TRUE

问题是你得到了这个结果!

enter image description here

使用行和列创建的框在面板中不包含相同的区域,如您所见。

在3列和5行的情况下,列必须共享tablelayoutpanel的100%,因此每个30%。在5行的情况下,每行必须占20%。

所以我在接下来的两行代码中附加了button_Click方法。

private void button_Click(object sender, EventArgs e)
    {
        this.tableLayoutPanel1.ColumnCount = 3;
        this.tableLayoutPanel1.RowCount = 5;
    }

但我得到了同样的结果! 我缺少什么?

1 个答案:

答案 0 :(得分:4)

可能您正在为已定义的TableLayoutPanel添加样式而不重置当前样式。

tableLayoutPanel1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
tableLayoutPanel1.Dock = DockStyle.Fill;

tableLayoutPanel1.Controls.Clear();
tableLayoutPanel1.ColumnStyle.Clear();
tableLayoutPanel1.RowStyle.Clear();

tableLayoutPanel1.RowCount = 5;
for(int x = 0; x < tableLayoutPanel1.RowCount; x++)
    tableLayoutPanel1.RowStyles.Add(new RowStyle() { Height = 20, SizeType = SizeType.Percent });
tableLayoutPanel1.ColumnCount = 3;
for(int x = 0; x < tableLayoutPanel1.ColumnCount; x++)
    tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle() { Width = 33, SizeType = SizeType.Percent });