动态添加的控件赋值。请高人指点
请高人指点,动态添加的控件赋值。
例如。在aa中动态添加了一个LABEL。想在bb中通过。label1.text给赋值不成功,请问可否用label1来赋值。
private void aa()
{
string i;
i=1;
Label myLabel = new Label( );
myLabelcnt.Name="label" + i;
this.Controls.Add (myLabelcnt);
}
private void bb()
{
label1.text="bbbbbb";
}
------解决方案--------------------你那样写能够通过编译吗?
this.Controls.Find("label1", false);
------解决方案--------------------貌似不可以。。。这样你都找不到这个label。。。我也想知道这种问题怎么解决合适呢 你把Label myLabel = new Label( );放外面定义呢
------解决方案--------------------不可以,编译都不会通过的。
private void aa()
{
for (int i = 0; i < 3; i++)
{
this.Controls.Add(new Label(){Name="label"+i.ToString ()});
}
}
private void bb()
{
foreach (Control item in this.Controls)
{
if (item.GetType().Name == "Label")
{
Label lbl = item as Label;
item.Text = "Test";
}
}
}
不过这样来添加label控件是可以的,也可以通过名字Label0、Label1、...来找到他,但是没有办法“label1.text="bbbbbb";”
因为他只是内存中的过客,并没有真正的存在于Form的Controls中。
代码中的Label的Position没有设置,所有都默认显示在了窗体左上角。
------解决方案--------------------
private void bb()
{
Control[] con = this.Controls.Find("label1", false);
if (con != null && con.Length > 0)
{
con[0].Text = "bbbbbb";
}
}