2015-11-29 145 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(); 
      } 
     }