2015-11-29 150 views
1

可以這樣做嗎?在標籤名稱中使用變量

var test = 1; 

label+test+.Text = "Some text goes here..."; 

這將導致:

label1.Text = "Some text goes here..."; 

我不介意使用開關的情況下,如果我有幾個案例,但我有一個40個標籤,我想動態分配的依據文本變量值。

+0

有可能,您需要使用像ExpandoObject這樣的動態對象。請參閱 - http://stackoverflow.com/questions/11891381/creating-dynamic-variable-names-in-c-sharp – William

+1

@William Expando對象在這裏做什麼?不是很多...... – DavidG

+0

@William雖然動態對象可能工作,但直接使用字典是更常見的方法來解決這個問題(並且會更容易得到正確的結果)...正如在CSV示例中,您已經將'dynamic '對於單行而言會更好,而不是對於表本身... –

回答

2

在表單中使用Controls.Find()。

void Button1Click(object sender, EventArgs e) 
{ 
    var test = 1; 
    var labels = Controls.Find("label" + test, true); 
    if (labels.Length > 0) 
    { 
     var label = (Label) labels[0]; 
     label.Text = "Some text goes here..."; 
    } 
} 
1

我有一個像40個標籤,我將取決於可變值

這裏的另一實例中,這基本上是相同的方法Handoko就像動態分配的文本 :

 for(int i = 1; i <= 40; i++) 
     { 
      Label lbl = this.Controls.Find("label" + i.ToString(), true).FirstOrDefault() as Label; 
      if (lbl != null) 
      { 
       lbl.Text = "Hello Label #" + i.ToString(); 
      } 
     }