2017-04-23 46 views
-3

我想改變標籤(i)的文本 爲「我」增加計時器label'i的」文本將改變如何使用字符串作爲標籤ID C#

int i =0; 
private void timer1_Tick(object sender, EventArgs e) 
    { 
     string label = "label" + i.ToString(); 
     Control l = FindControl(label); 
     Label labeli = (Label)l; 
     labeli.Text = "somthing"; 
     i++; 
    } 

,但它顯示錯誤

「名稱‘的FindControl’並不在當前的背景下存在」

是代碼不正確或者是另一種方式來做到這一點?

+1

你在哪裏定義了「我」和「FindControl」?更新你的問題。 –

+0

我更新了它,但我不明白如何定義「FindControl」 –

回答

0

你可以嘗試這樣的事情

var lbl = this.Controls.Find(label, true).FirstOrDefault() as Label; 

那麼你應該檢查是否lbl不是null值分配給它的Name財產。

if(lbl != null) 
{ 
    lbl.Text = "something"; 
} 
2

你可以使用LINQ:

Label label = Label label = this.Controls 
        .OfType<Label>() 
        .FirstOrDefault(l => l.Name == labelName); 

if (label != null) label.Text = "Something"; 

或者通過與標籤開頭的所有標籤重複:

var labels = this.Controls.OfType<Label>().Where(l => l.Name.StartsWith("label")); 

foreach (Label label in labels) { 
     label.Text = "somthing"; 
} 

或者,如果你想找到labels1-6:

var labels = Enumerable 
    .Range(1, 6) 
    .Select(i => 
     this.Controls.OfType<Label>().Where(l => l.Name == "label" + i)); 
相關問題