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