在C#中的tableLayoutPanel中自动调整行和列的大小

时间:2015-08-25 22:01:17

标签: c# .net tablelayoutpanel

我创建了一个由4x4网格组成的游戏。当玩家获胜时,我想通过将网格扩展到10x10来使游戏变得更难。

我通过添加以下内容使表单更大:

 this.Size = new Size(1375, 1375); 

tableLayoutPanel调整自身大小,因为它的Dock属性设置为fill。

然后我将行数和列数更改为10:

this.tableLayoutPanel1.RowCount = 10;
this.tableLayoutPanel1.ColumnCount = 10;

我希望每个单元格占用10%的空间,所以我尝试了:

this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));

但它不起作用:之前存在的列和行保持其大小,一个新行和一个新列占用剩余空间,其余的不占用任何空间空间。

那么如何重置前一个单元格的大小并使每个单元格占用10%的空间呢?

1 个答案:

答案 0 :(得分:1)

您需要先清除样式:

    this.tableLayoutPanel1.RowStyles.Clear();
    this.tableLayoutPanel1.ColumnStyles.Clear();

整个代码如下所示:

    this.Size = new Size(1375, 1375);
    this.tableLayoutPanel1.RowCount = 10;
    this.tableLayoutPanel1.ColumnCount = 10;
    this.tableLayoutPanel1.RowStyles.Clear();
    this.tableLayoutPanel1.ColumnStyles.Clear();
    for (int i = 1; i <= this.tableLayoutPanel1.RowCount; i++)
    {
        tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 1));
    }
    for (int i = 1; i <= this.tableLayoutPanel1.ColumnCount; i++)
    {
        tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 1));
    }