在for循环内将控件添加到Panel只会添加控件的第一次迭代

时间:2018-10-29 17:26:12

标签: c# loops controls

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

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

我也知道与此问题有关的另一个问题,但是它已经有6年历史了,该解决方案对我不起作用。

Panel pnl由包含已在表单上的标签和文本框的Panel填充。然后将该面板从控件中删除,并保留pnl

编辑说明: 该代码将循环多次,但是当到达panel1.Controls.AddRange(controls);时,无论数组控件的长度如何,panel1.controls的总数为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);
    }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

选中此行---> int.Parse(ddlPlayers.SelectedItem.ToString())