C#“额外空间”添加到动态添加面板

我有一个具有SplitContainer的C#Windows窗体。 里面SplitContainer2我有一个面板(Panel1)。 在这个小组中,我创建了10个更小的面板,每个文本框5个。 然后,我将这些面板中的每一个添加到Panel1。

for (int i = 1; i < 11; i++)
{
    Panel panel = new Panel();

    TextBox txtBox1 = new TextBox();
    TextBox txtBox2 = new TextBox();
    TextBox txtBox3 = new TextBox();
    TextBox txtBox4 = new TextBox();
    TextBox txtBox5 = new TextBox();

    splitContainer2.Panel1.Controls.Add(panel);
    panel.Controls.Add(txtBox1);
    panel.Controls.Add(txtBox2);
    panel.Controls.Add(txtBox3);
    panel.Controls.Add(txtBox4);
    panel.Controls.Add(txtBox5);
}

实质上,我试图创建一个10行5列的表格。 我试图用TableLayoutPanel做到这一点,但无法弄清楚,所以这是我的解决方法。

我想提供允许用户点击按钮“添加新行”的功能,并动态创建一个带有五个新文本框的新面板,然后将其添加为“表”中的第十一行。 用户可以不断添加任意数量的新“行”。

在我的Panel1中,我将属性设置为AutoScroll,以便在添加太多“行”时自动滚动。 由于某些原因,当“行”低于可缩放面板时,会添加一个额外的空间,并且随后为每个新的“行”添加。

问题:
1.如果我使用TableLayoutPanel,会发生同样的事情吗?
2.什么导致“额外空间”被添加?

编辑
以下回复与我的相同,我只是没有多少运气将它应用于我的解决方案。

在面板中添加控制器前几次都是可行的,然后就可以完成了

动态面板元素添加和滚动条


您可能需要将新控件添加到您之前添加的同一个面板

var penel = splitContainer2.Panel1.Controls.OfType<Panel>().FirstOrDefault();
if(penel !=null)
    penel.Controls.Add(yourNewTextBox);
链接地址: http://www.djcxy.com/p/61563.html

上一篇: C# "Extra Space" added to Dynamic Added panel

下一篇: How to get controls from panel in asp.net c#?