在for循环中向Panel添加控件只会添加控件的第一次迭代



我试图动态创建一个包含标签和文本框的面板列表,并将这些面板放入一个更大的面板中。

我的问题是,只有第一个子面板被添加到父面板中。我已经尝试过将面板直接添加到控件中,以及这个addrange方法。

此外,我知道这个问题的另一个问题,但它已经六年了,解决方案对我不起作用。

面板pnl由一个包含标签和文本框的面板填充,该面板已在窗体上。然后该面板将从控件中删除,pnl保持

编辑以进行澄清:代码将循环多次,但当它达到panel1.Controls.AddRange(controls);时,面板1控件的总数为1,而与阵列控件的长度无关

Panel pnl;
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Control[] controls = new Control[8];
for (int i = 0; i < int.Parse(ddlPlayers.SelectedItem.ToString()); i++)
{
pnl.Name = "pnl " + i.ToString();
if (i!= 0)
pnl.Location = new Point(pnl.Location.X, controls[i - 1].Location.Y + Height);
pnl.Show();
controls[i] = pnl;
}
panel1.Controls.AddRange(controls);
}

问题是我没有声明一个新面板,我只是使用了相同的控件。我以为把控件放进一个数组意味着它们会有所不同,但我错了。

检查此行--->int.Parse(ddlPlayers.SelectedItem.ToString())

最新更新