2016-03-01 92 views
0

我創建了一個for循環,並且我希望每次循環運行時都將隨機文本從數組中加載到不同的標籤中。我所有的標籤添加到我的形式,稱爲LBL1,LBL2,LBL3等在循環C中更改標籤#

Random r = new Random(); 

     for (int i = 1; i <= 4; i++) 
     { 
      int randomtext = r.Next(0, mytext.GetLength(0)); //choosing random element of array to be added to label 
      //this is where I want to add the text to a random label 
     } 

我怎樣才能文本每次添加一個隨機的標籤嗎?我需要創建一個數組還是某種列表?我希望每次只需添加i作爲變量名稱的後綴。很抱歉,如果這很明顯,我是C#的新手。

謝謝!

+0

這是Windows窗體(桌面應用程序), WPF,MVC或Web窗體? –

+0

我假設他在桌面上。那麼可能是WinForms或WPF? –

回答

2

有幾種方法可以根據您使用的框架來執行此操作。

在Windows窗體可以使用控件[「LBL1」]例如,所以你的情況,你會寫出如下循環:

Random r = new Random(); 
for (int i = 1; i <= 4; i++) 
{ 
    var randomtext = r.Next(0, mytext.GetLength(0)); //choosing random element of array to be added to label 
    var label = (Label)Controls["lbl"+i]; 
    label.Text = randomtext; 
} 

或類似的東西(我不記得確切的Api for Windows Forms)。

在WPF上,您可以使用FindName方法。容器控件有這個方法。

大多數其他框架應該有類似的方法。在最壞的情況下,你可以使用反射:

var label = (Label)this.GetType().GetProperty("lbl" + i).GetValue(this, null); 
+0

感謝您的幫助,正是我一直在尋找的! – djb

+0

@djb但你在哪個框架上運行? –

+0

我正在創建一個Windows窗體的桌面 – djb

0
Random r = new Random(); 

    for (int i = 1; i <= 4; i++) 
    { 
     int randomtext = r.Next(0, mytext.GetLength(0)); //choosing random element of array to be added to label 
     var randomLblIndx = r.Next(1,5);// I am assuming you have 4 lablels only 
     var lbl = (Label)this.Controls[lbl + randomLblIndx.ToString()]; 
     lbl.Text = myarrayOfText[randomtext]; 
    } 
0

如果你使用Windows窗體,還有在每個窗體(或成分)創建一個名爲Controls屬性。 此屬性是ControlCollection類型的集合,並具有一個名爲Find的函數,該函數允許您通過名稱查找特定控件。

所以,你可以做這樣的事情:

const labelProfix = "lbl"; 
    Random r = new Random(); 

    for (int i = 1; i <= 4; i++) 
    { 
     var randomNumber = r.Next(0, mytext.GetLength(0)); 
     var label = (Label)Controls.Find(labelPrefix + randomNumber.ToString(), false).First(); 
     label.Text = "My text"; 
    } 

注意Find()返回數組(名字可能是不明確),所以我們使用的擴展方法的System.Linq;First()拿到的第一個元素。此外,由於First(),該行代碼將拋出一個異常,如果它沒有找到我們通過的名稱的任何控制,所以你可以知道,如果代碼錯誤,沒有得到NullReferenceExceptions