C# 在对象名称中使用变量

C# 在对象名称中使用变量,c#,.net,variables,integer,label,C#,.net,Variables,Integer,Label,好的,假设我有一个名为abc的整数,我将abc设置为2。我怎么说label2.visible=true 我的意思是,如果我将abc设置为3,我想使label3.visible=true一种方法是使用和排列标签,然后根据编号执行以下操作: label_array[abc].visible = true; 在我看来,将控件放入数组最简单,如下所示: Label[] labels = new Label[] { label0, label1, label2, label3 }; 切换可见性,如下所

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


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

一种方法是使用和排列标签,然后根据编号执行以下操作:

label_array[abc].visible = true;

在我看来,将控件放入数组最简单,如下所示:

Label[] labels = new Label[] { label0, label1, label2, label3 };
切换可见性,如下所示:

void SetVisibility(int index, bool visible)
{
    labels[index] = visible;
}
var theLabel = (Label) this.Controls.Find("label" + abc.toString());
theLabel.Visible = true;

为了回答您的实际问题,这可能是通过反射实现的,但不是您真正想要做的事情,我想不出一个有效的用例

正如其他人所说,使用数组。

C#确实不支持这种语法

将标签放入某种结构中,并使用它来操作标签。这里有几个例子:

List<Label> labels = new List<Label>();
int i = /* some valid index (0 based) */
labels[i].visible = true;
列表标签=新列表();
int i=/*某些有效索引(基于0)*/
标签[i]。可见=真;

Dictionary labelDict=newdictionary();
添加(“label1”,label1);
labelDict[“label1”]。可见=真;
或者,您可以从父窗体的子控件列表中获取标签,并以这种方式设置可见性。

两个简单的示例

 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;

    }

你可以这样做:

void SetVisibility(int index, bool visible)
{
    labels[index] = visible;
}
var theLabel = (Label) this.Controls.Find("label" + abc.toString());
theLabel.Visible = true;
这段代码未经测试,我一时想不起来,但它应该可以工作。

您想使用该方法


这看起来像我想要的,但使用数组看起来更短、更容易、更简单,+点。是的,但这很好。。。不是很好,这将适用于2或3标签,但当我有更多标签时,我真的不想写那么多代码(我确实想写)。是的,这不是最好的方法,但我不知道您的编程水平,所以我试图帮助您提出一个想法:)。。。选择数组示例:D