在对象名中使用变量

时间:2011-05-06 01:04:43

标签: c# .net variables integer label

好的,假设我有一个名为abc的整数,我将abc设置为2.我怎么说label2.visible = true;

我的意思是,如果我将abc设置为3,我想制作label3.visible = true;

7 个答案:

答案 0 :(得分:6)

对我来说,最简单的方法是将控件放入数组中,如下所示:

Label[] labels = new Label[] { label0, label1, label2, label3 };

按以下方式切换可见性:

void SetVisibility(int index, bool visible)
{
    labels[index] = visible;
}

答案 1 :(得分:6)

您想使用Control.FindControl方法。

Label label = myForm.FindControl("label" + val) as Label;

if (label != null)
{
    // use...
}

答案 2 :(得分:3)

你可以这样做:

var theLabel = (Label) this.Controls.Find("label" + abc.toString());
theLabel.Visible = true;

此代码未经测试且不在我的头顶,但它应该可以正常工作。

答案 3 :(得分:2)

这样做的方法是拥有和标签数组,然后根据你可以做的数字:

label_array[abc].visible = true;

答案 4 :(得分:2)

要回答你的实际问题,这可能是通过反思实现的,但不是你真正想做的事情,我想不出有效的用例。

正如其他人发布的那样,请使用数组。

答案 5 :(得分:2)

C#真的不支持这种语法。

将标签放入某种结构中并用它来操纵标签。这里举几个例子:

List<Label> labels = new List<Label>();
int i = /* some valid index (0 based) */
labels[i].visible = true;

Dictionary<string, Label> labelDict = new Dictionary<string, Label>();
labelDict.add("label1", label1);
labelDict["label1"].visible = true;

或者,您可以从父窗体的子控件列表中获取标签,并以此方式设置可见性。

答案 6 :(得分:0)

两个简单的例子

 if(abc == 2)
     {
          label2.visible = true;
          label3.visible = false;
      }
   else if(abc ==3)
      {
         label3.visible = true;
         label2.visiable = false;       
      }

 or use a switch statement

    switch(abc)
    {
       case 2:
             label2.visible = true;
             break;
       case 3:
             label3.visible = true;
             break;

    }