日期:2014-05-16  浏览次数:20866 次

动态添加的控件赋值。请高人指点
请高人指点,动态添加的控件赋值。

例如。在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";
            }
}