嗨我正在尝试创建一个包含我自定义Panel的名为MyPanel的列表,并将列表中的面板添加到我的。但是,当Form1加载时,表单实际上显示的是1个面板,而不是总共10个面板。这是我的代码:
private void Form1_Load(object sender, EventArgs e)
{
List<MyPanel> tenPanels = new List<MyPanel>();
for(int i=0;i<10;i++)
{
MyPanel mp = new MyPanel();
tenPanels.Add(mp);
mp.Name = "digitPanel" + i;
mp.Location = new System.Drawing.Point(10+i, 32);
mp.Size = new System.Drawing.Size(147, 173);
this.Controls.Add(mp);
}
foreach(Panel p in tenPanels)
{
this.Controls.Add(p);
}
}
Form1_Load是visual studio自动生成的事件
答案 0 :(得分:2)
你至少有三个问题。
1,您试图将每个新的MyPanel添加两次,一次在主循环中,然后再在另一个循环中添加。我建议你完全删除第二个循环。
2,每个新面板的计算位置仅在最后一个面板的右侧1个像素,这意味着它们将重叠并相互隐藏。所以将Point更新为合理的东西。
3,每次添加新面板时,窗口都将执行布局计算。您可以通过要求控件等到最后一个添加到更新其布局之前来减少此操作。这样可以提供更好的性能。
this.BeginUpdate();
// your code
this.EndUpdate();