0

我有这个在表单上生成面板的方法:

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

        }
4

1 回答 1

2

检查方法,您只是更改现有的位置,Panel而 Control.Add 方法正在Parent再次设置属性,BorderStyle并且Size 已经设置为相同的值:

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>方法外部声明的或类似的东西。

于 2013-03-07T22:52:09.560 回答