如何在C#asp.net中动态创建文本框

本文关键字:动态 创建 文本 net C#asp | 更新日期: 2023-09-27 18:27:28

我需要一些关于我面临的问题的建议或想法。

我想根据输入字符串动态创建一个文本框,例如"11211"。

当它读取基于上面字符串的第一个字符时,在本例中为"1",将创建一个背景颜色为黄色的文本框。

循环将继续水平创建文本框,直到读取完上面字符串中的所有字符。

代码段如下:-

foreach (XmlNode xn in list1)
{
       string name = xn["BinCode"].InnerText;
       disGood.Text = name;
       string input = name;
       disOccupied.Text = input.Length.ToString();
       char[] b = name.ToCharArray();
       foreach (char c in b)
       {
           TextBox[] theTextBoxes = new TextBox[1];
           for (int i = 0; i < theTextBoxes.Length; i++)
           {
               theTextBoxes[i] = new TextBox();
               if (c.ToString() == "1")
               {
                   theTextBoxes[i].BackColor = Color.Yellow;
               }
           }
            disGood.Text = c.ToString();
        }
}

强烈推荐一些样品或想法。

谢谢。

如何在C#asp.net中动态创建文本框

我看到了很多冗余。例如:你的文本框数组是无用的,因为你总是在每次迭代中创建一个文本框。对额外变量inputb的赋值是额外但不需要的操作。试试这个:

foreach (XmlNode xn in list1)
{
    string name = xn["BinCode"].InnerText;
    disGood.Text = name;
    disOccupied.Text = name.Length.ToString();
    foreach (char c in name) // You can iterate through a string.
    {
        TextBox theTextBox = new TextBox();
        if (c == '1') // Compare characters.
        {
            theTextBox.BackColor = Color.Yellow;
        }
        Controls.Add(theTextBox); // Add the textbox to the controls collection of this parent control.
        disGood.Text = c.ToString(); // This will only show the last charachter. Is this as needed?
    }
}

要动态创建和水平显示文本框,请使用以下代码:

  TextBox t = new TextBox()
    {
         //To display textbox horizontally use the TableLayoutPanel object
         TableLayoutPanel(TextBox, Column, Row);
         //add any properties specs,
         //more property specs,
    };