Вы создаете новый список меток на каждой итерации цикла for
здесь:
for (int i = 0; i < data.solution.Length; i++)
{
underline = new List<Label>();
...
}
То, чего вы, вероятно, хотели достичь, - это создать список меток и изменить их. Для этого вы можете создать список, а затем создать ярлыки и добавить их в этот список один за другим:
var underline = new List<Label>(data.solution.Length);
for (int i = 0; i < data.solution.Length; i++)
{
var lbl = new Label();
lbl.Parent = ...
...
underline.Add(lbl);
}
Другим решением будет использование LINQ:
var underline = data.solution.Select(x =
{
left += 30;
return new Label
{
Parent = this,
Text = "_",
...
}
}).ToList();