2016-05-17 191 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ü要改變」

...