У меня есть TableLayoutPanel на форме, которая имеет 8 столбцов и 8 строк.Я пытаюсь заполнить эту таблицу из списка пользовательских элементов управления, каждый из которых содержит три метки.Когда я запускаю приложение, я вижу, что оно заполнено, но, глядя на фактическую форму, оно пустое.
Я попытался заменить элемент управления только меткой, и они отображаются нормально, этопросто когда я пытаюсь использовать пользовательский элемент управления, он не работает.
Этот код выполняется в методе Load и генерирует список GridSquareModel
, который используется для заполнения пользовательского элемента управления.Каждая модель имеет позиции X и Y, которые относятся к их ячейке на панели таблицы.
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();
}
Этот метод генерирует GridSquareControl
для каждого GridSquareModel
в списке.Значения 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);
}
}
Я прокомментировал мою попытку заменить GridSquareModel
на Label
, которая сработала.Это должно привести к созданию таблицы, содержащей 64 элемента управления, но после загрузки таблица будет пустой.