C# 运行时未将用户控件添加到TableLayoutPanel

C# 运行时未将用户控件添加到TableLayoutPanel,c#,winforms,C#,Winforms,我在表单上有一个TableLayoutPanel,它有8列8行。我试图从一个包含三个标签的用户控件列表中填充此表。当我运行应用程序时,我可以看到它已经被填充,但从实际表单看,它是空的 我试着用一个标签来替换控件,结果显示很好,只是当我尝试使用用户控件时,它不起作用 此代码以Load方法运行,并生成用于填充用户控件的GridSquareModel列表。每个模型都有一个X和Y位置,该位置与它们在桌子面板上的单元格相关 var startup=newstartupForm(); if(startup.

我在表单上有一个TableLayoutPanel,它有8列8行。我试图从一个包含三个标签的用户控件列表中填充此表。当我运行应用程序时,我可以看到它已经被填充,但从实际表单看,它是空的

我试着用一个标签来替换控件,结果显示很好,只是当我尝试使用用户控件时,它不起作用

此代码以Load方法运行,并生成用于填充用户控件的
GridSquareModel
列表。每个模型都有一个X和Y位置,该位置与它们在桌子面板上的单元格相关

var startup=newstartupForm();
if(startup.ShowDialog()==DialogResult.OK)
{
var grid=新列表();
对于(int i=0;i<64;i++)
{
位置pos=新位置();
位置X=i%8;
位置Y=i/8;
添加(新的GridSquareModel(pos));
}
渲染网格(网格);
}
其他的
{
Application.Exit();
}
此方法为列表中的每个
GridSquareModel
生成
GridSquareControl
。该位置中的X和Y值确定将它们添加到哪个单元格

private void RenderGrid(列表网格)
{
UIGrid.Clear();
Controls.Clear();
foreach(网格中的var项)
{
var控制=新的GridSquareControl(项目)
{
Dock=DockStyle.Fill
};
GridTable.Controls.Add(控件,item.Position.X,item.Position.Y);
//GridTable.Controls.Add(新标签
//{
//Text=“测试”
//},项目位置X+1,项目位置Y+1);
}
}

我已经对我尝试用
标签
替换
GridSquareModel
的尝试发表了评论,这是有效的。这将生成一个包含64个控件的表,但一旦加载,该表就会显示为空。

我是个白痴。我为
GridSquareControl
创建了一个构造函数,但它没有包含
InitializeComponent
方法,因此显然没有呈现它。现在一切正常。

如果
Label
有效而
GridSquareControl
无效,我会怀疑控件本身。例如,它的
可见
设置为
?当我们不确切知道如何实现
GridSquareControl
时,很难进行调查/提供帮助。