我在一个按钮的事件里写下如下代码:
private void button2_Click(object sender, EventArgs e)
        {            Label lab = new Label();
            lab.Text = "ss";            panel1.Controls.Add(lab);
            panel2.Controls.Add(lab);
}
执行结果panel2中显出出label,panel1不显示。
疑问:
1.为什么只有panel2中显示label,而panel1中不显示?
2.lab作为一个局部变量,函数执行完后应该析构,为什么点击按钮后 lab 依然可以显示出来?

解决方案 »

  1.   

    1.
      panel1.Controls.Add(lab);
      panel2.Controls.Add(lab);
    //同一个控件,不能同时加到两个地方,应该是以最后一次为依据吧
    2.
    Label是引用类型,当不再被“引用”时,在GC进行垃圾回收时可能被回收
    但是添加到panel中,被引用了//动态添加的控件,在页面刷新后会消失,需要重新添加一次
      

  2.   

    1.
      panel1.Controls.Add(lab);
      panel2.Controls.Add(lab);
    //同一个控件,不能同时加到两个地方,应该是以最后一次为依据吧
    2.
    Label是引用类型,当不再被“引用”时,在GC进行垃圾回收时可能被回收
    但是添加到panel中,被引用了//动态添加的控件,在页面刷新后会消失,需要重新添加一次