c# - 将多个面板添加到表单中

标签 c# winforms

您好,我正在尝试创建一个列表,其中包含名为 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/

相关文章:

c# - 立即更新列表框

c# - 数据表 Select() 方法

c# - 如何按键搜索自定义配置部分

c# - .Net 4.0 JSON 序列化 : Double quotes are changed to\"

c# - 更改事件标签页上的字体颜色

winforms - 当文本框更改而不是失去焦点时更新数据绑定(bind)

c# - Windows 服务 + Windows 窗体应用程序。一个数据库。关于并发的建议

c# - 使用 DynamoDBContext.Query<T> 和 QueryOperator 与使用 QueryFilter 和 List<ScanCondition> 在 .NET 中查询 DynamoDB

c# - 如何重建解决方案中的所有项目?

c# - 序列化专业列表<>