C# TableLayoutPanel-调整父控件大小时调整每个单元格的大小

C# TableLayoutPanel-调整父控件大小时调整每个单元格的大小,c#,.net,winforms,tablelayoutpanel,C#,.net,Winforms,Tablelayoutpanel,我正在处理一个控件,它包含一个TableLayoutPanel。 该面板包含X行和Y列,其中每个单元格的大小相同。 每个单元格包含一个控件 调整父控件的大小时,我希望每个单元格也调整大小,并且彼此保持相同的大小 当添加到单元格时,我已尝试设置控件“锚定”: control.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom; 但这只会使

我正在处理一个控件,它包含一个
TableLayoutPanel
。 该面板包含X行和Y列,其中每个单元格的大小相同。 每个单元格包含一个
控件
调整父控件的大小时,我希望每个单元格也调整大小,并且彼此保持相同的大小

当添加到单元格时,我已尝试设置
控件“
锚定”:

control.Anchor = AnchorStyles.Left | AnchorStyles.Top |
                 AnchorStyles.Right | AnchorStyles.Bottom;

但这只会使底部的行和最右边的列展开。

使用设计器或代码,可以将列和行的
SizeType
设置为
Percent
,并为其大小指定相同的百分比值。还将控件的
Dock
属性设置为
Fill

例如:

tableLayoutPanel1.ColumnStyles.Clear();
tableLayoutPanel1.RowStyles.Clear();
for (var i = 0; i < tableLayoutPanel1.ColumnCount; i++)
{
    var percent = 100f / (float)tableLayoutPanel1.ColumnCount;
    tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, percent));
}
for (var i = 0; i < tableLayoutPanel1.RowCount; i++)
{
    var percent = 100f / (float)tableLayoutPanel1.RowCount;
    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, percent));
}
tableLayoutPanel1.ColumnStyles.Clear();
tableLayoutPanel1.RowStyles.Clear();
对于(变量i=0;i
谢谢!这是一个很大的帮助。但是有一些奇怪的事情发生了:最后一行和最后一列只是比其他行/列稍微大一点?如果我将SizeType设置为Absolute,它们的大小将相同,但不会调整大小。不客气。请看一个例子。我无法重现你在评论中提到的问题。