[英]User Control not Adding to TableLayoutPanel at Runtime
我在一个有 8 列和 8 行的表单上有一个 TableLayoutPanel。 我正在尝试从每个包含三个标签的用户控件列表中填充此表。 当我运行该应用程序时,我可以看到它已被填充,但查看实际表单,它是空的。
我试过用 label 替换控件,它们显示得很好,只是当我尝试使用用户控件时它不起作用。
此代码在 Load 方法中运行并生成GridSquareModel
列表,用于填充用户控件。 每个 model 都有一个 X 和 Y position,它们与表格面板上的单元格相关。
var startup = new StartupForm();
if (startup.ShowDialog() == DialogResult.OK)
{
var grid = new List<GridSquareModel>();
for (int i = 0; i < 64; i++)
{
Position pos = new Position();
pos.X = i % 8;
pos.Y = i / 8;
grid.Add(new GridSquareModel(pos));
}
RenderGrid(grid);
}
else
{
Application.Exit();
}
此方法为列表中的每个GridSquareModel
生成一个GridSquareControl
。 position 中的 X 和 Y 值确定将它们添加到哪个单元格。
private void RenderGrid(List<GridSquareModel> grid)
{
UIGrid.Clear();
GridTable.Controls.Clear();
foreach (var item in grid)
{
var control = new GridSquareControl(item)
{
Dock = DockStyle.Fill
};
GridTable.Controls.Add(control, item.Position.X, item.Position.Y);
//GridTable.Controls.Add(new Label
//{
// Text = "TEST"
//}, item.Position.X + 1, item.Position.Y + 1);
}
}
我已经评论了我用Label
替换GridSquareModel
的尝试,该尝试有效。 这应该会生成一个包含 64 个控件的表格,但是一旦加载,表格就会显示为空。
我是个白痴。 我为GridSquareControl
创建了一个构造函数,但它不包含InitializeComponent
方法,因此显然它没有被渲染。 现在一切都按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.