动态添加面板

时间:2014-12-22 22:02:39

标签: 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 = 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");                
}

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您正在创建该面板,但您并未将其添加到您的父控件(我假设它是一个表单)。

您需要添加以下内容:

this.Controls.Add(p);

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

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

答案 1 :(得分:3)

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

this.Controls.Add(panel);

我认为你应该阅读How to programmatically add controls to Windows forms at run time by using Visual C#

答案 2 :(得分:1)

您创建了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添加一些控件,请记住:

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