2011-05-06 106 views
3

好吧,让我们说我有一个整数,称为abc,我设置了abc到2.如何说label2.visible = true;在对象名称中使用变量

我的意思是,如果我设置ABC 3我要让label3.visible = true;

+0

对不起,但我没有得到它 - 你可以改述或说明你正在尝试做什么? – 2011-05-06 01:07:15

+0

我指出了一切,你都是正确的:) – user710502 2011-05-06 01:16:34

回答

6

在我看来,最简单的把你的控件到一个数组如下:

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

切换的知名度是这样的:

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

你的解决方案似乎是最好的,即使它不完全是我想要的,它已经够好了。并且足够短^^ – Foresp 2011-05-06 01:23:58

2

做的方式,它是有和标签的数组,然后根据号码,你可以这样做:

label_array[abc].visible = true; 
2

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

正如其他人发布一样,使用一个数组。

+0

我明白了。数组很容易:)(+ btw) – Foresp 2011-05-06 01:26:19

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; 

另外,您可以得到子控件的父窗体的列表中的标签,并设置可见性的方式。

+0

谢谢你,这看起来不错,我会用数组tho。(+) – Foresp 2011-05-06 01:29:30

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; 

    } 
+0

是的,但这是好的...不是真的,这将工作2或3标签但当我有更多的标签(我这样做)时,我真的不想写这么多的代码。 – Foresp 2011-05-06 01:27:46

+0

是的,它不是最好的方法,但我不知道你的编程水平,所以我试图帮助一个想法:)...去数组的例子:D – user710502 2011-05-06 01:32:16

3

你可以做这样的事情:

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

此代码是未经测试,并把我的头顶部,但它应该工作。

+1

谢谢。这很好(+) – Foresp 2011-05-06 01:25:48

+0

不客气!希望这可以帮助! – SquidScareMe 2011-05-06 01:27:46

6

您想要使用Control.FindControl方法。

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

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

,看起来像我想要的,但使用数组看起来更简单,更简单,+点。 – Foresp 2011-05-06 01:25:13