动态添加面板

本文关键字:添加 动态 | 更新日期: 2023-09-27 18:34:56

我意识到这里已经多次提出了类似的问题,但我无法弄清楚为什么我的代码不起作用。

我尝试仅在 int 变量 selected 等于 0 时才添加一个面板。当我运行我的代码时,我没有像我预期的那样看到我的面板。

我的代码如下:

if (selected == 0)
{      
    Panel p = new Panel();
    p.Height = 637;
    p.Width = 449;
    p.Location = new Point (269, 449);
    p.BorderStyle = BorderStyle.FixedSingle;
    p.Visible = true;
    p.BackColor = Color.White;
    p.AllowDrop = true;
    p.Dock = DockStyle.Top;
    p.Show();
    MessageBox.Show("Now we should see the Panel");                
}

我做错了什么?

动态添加面板

您正在创建面板,但您没有将其添加到父控件(我假设它是一个 Form(。

您需要添加如下所示的内容:

this.Controls.Add(p);

所以你的总代码将是这样的:

if (selected == 1)
{
  var p = new Panel();
  // Set some properties
  this.Controls.Add(p);
}

您需要将面板添加到父控件:

this.Controls.Add(panel);

我认为您应该阅读此内容 如何使用Visual C#在运行时以编程方式将控件添加到Windows窗体

创建一个Panel,但不将其添加到任何控件集合。

您可以使用以下代码执行此操作:

if (selected == 0)
{      
    Panel p = new Panel();
    p.Height = 637;
    p.Width = 449;
    p.Location = new Point (269, 449);
    p.BorderStyle = BorderStyle.FixedSingle;
    p.Visible = true;
    p.BackColor = Color.White;
    p.AllowDrop = true;
    p.Dock = DockStyle.Top;
    ///p.Show();
    this.Controls.Add(p);
    MessageBox.Show("Now we should see the Panel");                
}

如果要向Panel添加一些控件,请记住:

  • 相对于Panel设置.Location
  • 使用p.Controls.Add(yourNewControl)