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

时间:2014-04-16 03:04:43

标签: c# winforms

我有一个C#Windows窗体,它有一个SplitContainer。在SplitContainer2里面我有一个Panel(Panel1)。在该面板中,我创建了10个较小的面板,每个面板有5个TextBox。然后我将每个面板添加到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执行此操作,但无法弄清楚,所以这是我的解决方法。

我希望能够让用户点击按钮&#34;添加新行&#34;并动态创建一个带有五个新文本框的新面板,然后将其添加为&#34;表&#34;中的第十一行。用户可以继续添加新的&#34;行&#34;尽可能多的人。

在我的Panel1中,我将属性设置为AutoScroll,以便当太多&#34;行&#34;添加它自动滚动。出于某种原因,当&#34;行&#34;在可分割的面板下面,增加了一个额外的空间,并且每增加一个新的&#34;行&#34;此后。

Weird Space

问题:
1.如果我使用TableLayoutPanel会发生同样的事情吗? 2.导致&#34;额外空间的原因是什么?要加入吗?

修改
以下回复与我的回答相同,我只是没有太多运气将其应用到我的解决方案中。

Adding controls to the Panel works the first couple of times, then fritzes out

Dynamic panel element adding and scrollbars

1 个答案:

答案 0 :(得分:0)

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

var penel = splitContainer2.Panel1.Controls.OfType<Panel>().FirstOrDefault();
if(penel !=null)
    penel.Controls.Add(yourNewTextBox);
相关问题