Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用方法以创建多个动态表单控件_C#_Winforms - Fatal编程技术网

C# 调用方法以创建多个动态表单控件

C# 调用方法以创建多个动态表单控件,c#,winforms,C#,Winforms,我有一个方法可以在表单上生成一个面板: private void createPanels(int spacing) { pnl1.Location = new Point(0, spacing); pnl1.BorderStyle = BorderStyle.FixedSingle; pnl1.Size = new Size(100, 93); tabRotaBuild.Contro

我有一个方法可以在表单上生成一个面板:

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);

        }

检查该方法,您只需更改现有
面板和控件的位置。Add方法正在再次设置
父属性,
边框样式和
大小已设置为相同的值:

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);

        }
您需要创建新的
面板
添加
pnl1=新面板()在您的方法中

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();

请注意,添加的面板上不会有引用。您可以将每个引用添加到方法之外声明的
列表或类似内容。

不要将新面板添加到
选项卡
,而是尝试将其添加到
FlowLayout
控件。