调用方法来创建多个动态表单控件

时间:2013-03-07 22:47:55

标签: c# winforms

我有这个方法在窗体上生成一个Panel:

private void createPanels(int spacing)
        {
            pnl1.Location = new Point(0, spacing);
            pnl1.BorderStyle = BorderStyle.FixedSingle;
            pnl1.Size = new Size(100, 93);
            tabRotaBuild.Controls.Add( pnl1);

        }

然后我在表单加载中调用此方法:

   private void Form1_Load(object sender, EventArgs e)
    {
        createPanels(60);            
    }

我接下来要做的是再次显示此面板(新面板),而不清除现有面板。我有一个按钮,在单击时会生成新面板,但是当我单击它时,现有面板会在显示新面板时消失。

这是按钮背后的代码:

int s = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            s += 100;
            createPanels(s);

        }

1 个答案:

答案 0 :(得分:2)

检查方法,您只是更改现有Panel的位置,Control.Add方法再次设置Parent属性,BorderStyleSize已经被设置为相同的值:

private void createPanels(int spacing)
        {
            pnl1.Location = new Point(0, spacing); //notice here
            pnl1.BorderStyle = BorderStyle.FixedSingle;
            pnl1.Size = new Size(100, 93);
            tabRotaBuild.Controls.Add( pnl1);

        }

您需要创建新的Panel 在方法中添加pnl1 = new Panel();

private void createPanels(int spacing)
    {
        pnl1 = new Panel();
        pnl1.Location = new Point(0, spacing);
        pnl1.BorderStyle = BorderStyle.FixedSingle;
        pnl1.Size = new Size(100, 93);
        tabRotaBuild.Controls.Add( pnl1);

    }

或者您可以在方法

中声明并实例化新面板
Panel panel = new Panel();

请注意,您在添加的面板上没有参考。您可以将每个引用添加到方法外部声明的List<Panel>或类似的内容。