C# 面板的动态添加

C# 面板的动态添加,c#,winforms,dynamic,C#,Winforms,Dynamic,我意识到类似的问题已经在这里被问了很多次,但我无法理解为什么我的代码不起作用 仅当int变量selected等于0时,我才尝试添加面板。当我运行代码时,我并没有看到我预期的面板 我的代码如下: if (selected == 0) { Panel p = new Panel(); p.Height = 637; p.Width = 449; p.Location = new Point (269, 449); p.BorderStyle = B

我意识到类似的问题已经在这里被问了很多次,但我无法理解为什么我的代码不起作用

仅当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");                
}

我做错了什么?

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

您需要添加以下内容:

this.Controls.Add(p);
因此,您的总代码如下所示:

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

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

this.Controls.Add(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");                
}
如果要将一些控件添加到
面板
中,请记住:

  • 相对于
    面板设置
    .Location
  • 使用
    p.Controls.Add(你的新控件)

您在内存中创建了面板,但尚未将其添加到表单中。非常感谢大家!!这是我第一次使用“This”对象,现在很多东西又有意义了!!谢谢这实际上让我更容易理解!非常感谢你!