2016-05-17 190 views
-1

我目前在Visual Studio的Windows窗体中有5个标签,我需要用这5个标签填充数组。用标签填充数组

5个标签被命名为“die1”,“die2”,“die3”,“die4”,“die5”

我想我应该能够产生数组,然后使用for循环来填充它,但for循环是我卡住的地方。这是我到目前为止:

Label[] labels = new Label[5]; 

    for (int i = 0; i < labels.Length; i++) 
      labels[i] = new Label(die(i)); 

任何帮助,将不胜感激!

+0

你已经有了这些标签,如您拖动它们到窗体,并命名呢? 'Label [] labels = new [] {die1,die2,die3,die4,die5};'在这种情况下会起作用。 – Blorgbeard

+0

你的意思是“新标签(die(i))'?是'死'的方法将分配一个字符串值的标签? –

+0

是否要创建新标签或读取现有标签(在表单中)? –

回答

4

您可以使用LINQ到搜索的Form的控件的集合,并创建任何Label的名字的数组开始与‘死’:

var labels = Controls.OfType<Label>() 
        .Where(label => label.Name.StartsWith("die")) 
        .ToArray(); 
+0

你的解决方案很棒,虽然我没有通过'new Label(die(i))'得到他的意思......这听起来像是他没有在寻找''死'他正在分配'它。 –

+0

@Sufyan是的,这有点令人困惑。我的解释是他已经有了标签,并试图用'死(i)'来引用他们,但我可能是错的。 –

+0

迂腐的评论,帮助像我这样的新手!也许改变.Where(l => l.Name.StartsWith(“die”)to .Where(lbl => lbl.Name.StartsWith(“die”)?我完全被l所迷惑,我认为它是1一会儿!但很好的解决方案! – HedgePig

0
 Label[] lbl ; 

     private void setupControls() 
     { 
      int Totallbl = 5; 
      int height = 30; 
      lbl = new Label[Totallbl]; 
      try 
      { 
       for (int i = 0; i < Totallbl; i++) 
       { 
        lbl[i] = new Label(); 
        lbl[i].Location = new Point(20, ((i + 1) * height)); 
        lbl[i].Name = "lbl" + i; 
        lbl[i].Text = "LabelText"; 
        lbl[i].AutoSize = true; 
        this.Controls.Add(lbl[i]); 
       } 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
     } 

您可以致电回到这样的标签:

LBL [0]。文本= “TEXTü要改变”

磅L [1]。文本=“TEXTü要改变”

...