动态创建控件相关问题?

boyok 2010-08-23 04:23:51
我在一个按钮的事件里写下如下代码:
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 依然可以显示出来?
...全文
36 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
deyygywxf 2010-08-23
  • 打赏
  • 举报
回复
1.
panel1.Controls.Add(lab);
panel2.Controls.Add(lab);
//同一个控件,不能同时加到两个地方,应该是以最后一次为依据吧
2.
Label是引用类型,当不再被“引用”时,在GC进行垃圾回收时可能被回收
但是添加到panel中,被引用了

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

//动态添加的控件,在页面刷新后会消失,需要重新添加一次

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧