您好,我正在尝试创建一个列表,其中包含名为 MyPanel 的自定义面板,并将列表中的面板添加到我的 from。然而,当 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自动生成的事件
最佳答案
你至少有三个问题。
1,您正在尝试将每个新的 MyPanel 添加两次,一次在主循环中,然后在另一个循环中再次添加。我建议您完全删除第二个循环。
2,每个新面板的计算位置只比最后一个面板右边1个像素,这意味着它们将重叠并相互隐藏。因此,请将 Point 更新为合理的值。
3、每次添加新面板时窗口都会进行布局计算。您可以通过要求控件等到最后一个添加后再更新其布局来减少这种情况。这将提供更好的性能。
this.BeginUpdate();
// your code
this.EndUpdate();
关于c# - 将多个面板添加到表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955392/