form1界面上有10个label控件:label1,label2,label3,label4,label5,label6,label7,label8,label9,label10。现在想通过一个循环来给它们赋值for(int i=1;i<=10;i++)
{
    form1.find( "label"+Convert.ToString(i) ).Text = Convert.ToString(i) + "号";
}我想问的是,有没有像上面的那样的form1.find这样的函数呢?或者其他的办法呢?
求解答,谢谢!

解决方案 »

  1.   


      foreach (var item in this.Controls)
                    {
                        if (item is Label)
                        {
                            Label label = item as Label;
                            label.Text = "";//在这里给label赋值就行了
                        }
                    }
      

  2.   


    var labels = form1.Controls.OfType<Label>();
    for (int i = 0; i < labels.Count(); i++)
    {
        labels.ElementAt(i).Text = i + "号";
    }
      

  3.   

    大侠,用您的办法,这里的labels.ElementAt(0) 不等于label1,就是整个顺序错乱了,我要的结果是label1.Text="1号";label2.Text="2号";
    ......
    label9.Text="9号";label10.Text="10号";这样的顺序,不过,发现,labels里面有个方法OrderBy,不知道怎么使用?
      

  4.   

    不行,labels.ElementAt(10)的话就溢出了,它是从0-9的,问题在于它的顺序和label1-label10的顺序不一致。
      

  5.   

    找到了解决办法了:用强制类型转换:Label labels = (Label)this.Controls["label"+Convert.ToString(i)];然后:labels.Text = Convert.ToString(i) + "号";