【问题标题】:how to define an array of textboxes in c#?如何在 C# 中定义一个文本框数组?
【发布时间】:2012-06-02 00:25:53
【问题描述】:

您好,当我在 Windows 应用程序表单上创建文本框时,我无法将其命名为 box[0]、box[1] 等。我这样做的目的是因为我想循环使用它们。

【问题讨论】:

    标签: c# arrays loops textbox naming


    【解决方案1】:

    创建它们之后如何列出它们?在您的表单初始化函数中,您可以执行以下操作:

    List<TextBox> myTextboxList = new List<TextBox>();
    myTextBoxList.Add(TextBox1);
    myTextBoxList.Add(TextBox2);
    mytextBoxList.Add(TextBox3);
    

    现在您可以使用“myTextboxList”进行迭代,如下所示:

    Foreach (TextBox singleItem in myTextboxList) {
        // Do something to your textboxes here, for example:
        singleItem.Text = "Type in Entry Here";
    }
    

    【讨论】:

    • 是的,List 可能会更好。您可以更轻松地添加/删除文本框。
    • 那个函数在哪里?公共 MainForm() { InitializeComponent(); } 这个?如果是这样给出一个错误...
    • 顺便问一下,我该如何运行它?不像 myTextBoxList[0] 那样工作
    • @SarpKaya 放在 InitializeComponent() 之后;
    • 您的表单初始化点将取决于您正在制作的应用程序类型......它是windows、Gtk、Mac等......通常会有一个入口点到您的代码开始的地方,您可以在其中包含它...如果您不使用 IDE,并且手动创建所有文本框,则可以在创建文本框后直接使用此代码。
    【解决方案2】:

    您可以在运行时创建文本框,然后将它们放在一个数组中...

    如果您想在设计时执行此操作,则必须对整个 this.Controls 数组执行一些控制过滤逻辑,以便仅访问所需的文本框。如果表单中的所有文本框都是数组中的文本框,请考虑 if (currControl is TextBox)

    设计时的另一个选择是将所有想要的文本框放在一个面板中,该面板将成为它们的父级,然后遍历面板的子级(控件)并将它们转换为 TextBox。

    运行时解决方案类似于:

    var arr = new TextBox[10];
    
    for (var i = 0; i < 10; i++)
    {
        var tbox = new TextBox();
    
        // tbox.Text = i.ToString();
    
        // Other properties sets for tbox
    
        this.Controls.Add(tbox);
        arr[i] = tbox;
    }
    

    【讨论】:

      【解决方案3】:
      TextBox[] t = new TextBox[10];
      for(int i=0;i<required;i++)
      { 
         t[i]=new TextBox();
         this.Controls.Add(t[]);
      }
      

      【讨论】:

      • Visual Studio 2013 标记“this.Controls.Add(t[]);”作为“语法错误;预期值”
      【解决方案4】:

      我个人不会为此使用数组。我会使用某种形式的通用集合,比如 List。

          List<TextBox> textBoxList = new List<TextBox>();
      
          //Example insert method
          public void InsertTextBox(TextBox tb)
          {
              textBoxList.Add(tb);
          }
      
          //Example contains method
          public bool CheckIfTextBoxExists(TextBox tb)
          {
              if (textBoxList.Contains(tb))
                  return true;
              else
                  return false;
          }
      

      您不一定必须使用 Contains 方法,您也可以使用 Any(),或者甚至可能找到其他方法 - 这一切都取决于您在做什么。我只是认为在这种情况下,使用泛型集合比简单数组更灵活。

      【讨论】:

      • 哇,看到函数名以低字符开头很奇怪。它看起来像 Java。)
      • 哈!我想我的 Java 根背叛了我。 :)
      【解决方案5】:

      其实我发现TextBox[] array = { firstTextBox, secondTextBox };也可以!

      【讨论】:

        【解决方案6】:

        对于C#,只需使用它来创建一个文本框数组

        public Text [] "YourName" = new Text ["how long you want the array"];
        

        然后将文本框单独添加到数组中。

        【讨论】:

          【解决方案7】:

          TextBox Array using C#

           // Declaring array of TextBox
          private System.Windows.Forms.TextBox[] txtArray;
          
          private void AddControls(int cNumber)
          {
          
                      // assign number of controls
          
                      txtArray = new System.Windows.Forms.TextBox[cNumber + 1]; 
          
                      for (int i = 0; i < cNumber + 1; i++)
          
                      {
          
                                  // Initialize one variable
          
                                  txtArray[i] = new System.Windows.Forms.TextBox();
          
                      }
          }
          

          【讨论】:

            猜你喜欢
            • 2018-11-01
            • 1970-01-01
            • 2011-10-17
            • 2016-02-17
            • 1970-01-01
            • 2018-11-14
            • 2021-12-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多