在对象名称中使用变量



假设我有一个叫abc的整数我将abc设置为2.那么label2.visible = true;怎么写呢?

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

在我看来,最容易把你的控件放入数组中,如下所示:

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

像这样切换可见性:

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

您需要使用Control.FindControl方法

Label label = myForm.FindControl("label" + val) as Label;
if (label != null)
{
    // use...
}

你可以这样做:

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;

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

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

一种方法是有一个数组的标签,然后根据数量你可以做:

label_array[abc].visible = true;

两个简单的例子

 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;
    }

相关内容

  • 没有找到相关文章

最新更新