【问题标题】:using variables in object names在对象名称中使用变量
【发布时间】:2011-08-19 19:59:02
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net variables integer label


    【解决方案1】:

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

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

    像这样切换可见性:

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

    【讨论】:

      【解决方案2】:

      您想使用Control.FindControl 方法。

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

      【讨论】:

      • 这看起来像我想要的,但使用数组看起来更短、更容易、更简单,+点。
      【解决方案3】:

      你可以这样做:

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

      这段代码未经测试,我想不到,但它应该可以工作。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          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】:

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

            label_array[abc].visible = true;
            

            【讨论】:

              【解决方案7】:

              两个简单的例子

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

              【讨论】:

              • 是的,但这很好......真的不好,这适用于 2 或 3 个标签,但当我有更多标签时,我真的不想写那么多代码(我会这样做)。跨度>
              • 是的,这不是最好的方法,但我不知道你的编程水平,所以我试图帮助一个想法:)...去数组示例:D
              猜你喜欢
              • 2013-06-01
              • 2011-11-29
              • 2010-12-06
              • 1970-01-01
              • 2016-02-19
              • 1970-01-01
              • 1970-01-01
              • 2011-08-13
              • 1970-01-01
              相关资源
              最近更新 更多