private void Form1_Load(object sender, EventArgs e)
        {
            Button b = new Button();
            button1 = b;
            Panel p = new Panel();
            Label l = new Label();
            l.Text = "D";
            p.Controls.Add(l);
            //p.Location = new System.Drawing.Point(104, 94);
            //p.Name = "panel1";
            //p.Size = new System.Drawing.Size(176, 70);
            //p.TabIndex = 0;
            //this.Controls.Add(p);
            p.BackColor = Color.Aqua;
            panel1=p;
            //panel1.Controls.Add(p);            
            MessageBox.Show(panel1.Left.ToString());
        }
运行时创建了一个panel p,这个panel会添加一个label l,
为什么将运行时创建的p付值给设计时创建的panel没有显示呢...
如果是 panel1.Controls.Add(p); 则可以正常显示..何解..

解决方案 »

  1.   

    和添加label同样的道理 你的panel还没有添加到当前的容器中
    例如this.Controls.Add(p);//当然最好还是指定好位置 dock 以及别的属性才好
      

  2.   

    我是这么认为的,
        form.Controls.Add(panel1);
        这是form显示panel1指针指向的内存中的数据
       
        设置 panel1 = p 后,将panel1指针指向了p
        但是form中控件显示的还是panel1以前的地址中的数据
      

  3.   

    ouhou的说法应该是正确的..因为在付值了之后panel1还是保持原来的状态..